管理画面css読み込み
//***--- 管理画面用JSとCSS読み込み true=body直前 false=head
//my_admin_script.jsはテーマファイル内/js/にアップロード
//my_admin_style.cssはテーマファイル内/css/にアップロード
function my_admin_script(){
wp_enqueue_script( 'my_admin_script', get_template_directory_uri().'/js/my_admin_script.js', array('jquery'), '', true);
wp_enqueue_style('admin-styles', get_template_directory_uri().'/css/my_admin_style.css');
}
add_action( 'admin_enqueue_scripts', 'my_admin_script' );
my_admin_style.css
.modified-box {
padding-top: 5px;
overflow: hidden;
}
.modified-box-date {
font-weight: bold;
}
.modified-time-timestamp-wrap {
margin-bottom: 15px;
}
.modified-time {
margin-top: 5px;
padding: 2px 0 1px 0;
display: block !important;
height: auto !important;
}
.modified-time:before {
font: normal 20px/1 'dashicons';
content: '\f145';
color: #888;
padding: 0 5px 0 0;
top: -1px;
left: -1px;
position: relative;
vertical-align: top;
}
select.mm {
height: 21px;
line-height: 14px;
padding: 0;
vertical-align: top;
font-size: 12px;
}
#aa_mod, #jj_mod, #hh_mod, #mn_mod {
padding: 1px;
font-size: 12px;
}
#jj_mod, #hh_mod, #mn_mod {
width: 2em;
}
#aa_mod {
width: 3.4em;
}
custom-post.php
//***--- ブログ管理画面の「公開」の上に「更新日時」枠を追加
// メタボックスを表示 メタボックス内のソースはmy_custom_mod_dateで設定
if( !function_exists( 'my_add_meta_box' ) ):
function my_add_meta_box() {
add_meta_box( 'update_level', '更新日時', 'my_custom_mod_date', 'post', 'side', 'default' );
}
add_action( 'admin_menu', 'my_add_meta_box' );
endif;
// 更新日フォーム
if( !function_exists( 'my_custom_mod_date' )):
function my_custom_mod_date() {
global $post;
?>
<div class="modified-box">
<input id="update_level_edit" name="update_level" type="radio" value="edit" checked="checked" />手動で設定
<?php
if( get_the_modified_date( 'c' ) ) {
$stamp = '更新日時: <span class="modified-box-date">' . get_the_modified_date( __( 'M j, Y @ H:i' ) ) . '</span>';
}
else {
$stamp = '更新日時: <span class="modified-box-date">未更新</span>';
}
$date = date_i18n( get_option('date_format') . ' @ ' . get_option('time_format'), strtotime( $post->post_modified ) );
?>
<span class="modified-time"><?php printf( $stamp, $date ); ?></span>
<div class="modified-time-timestamp-wrap" onkeydown="document.querySelector('#update_level_edit').checked=true" onclick="document.querySelector('#update_level_edit').checked=true">
<?php my_time_mod_form(); ?>
</div>
<div><input name="update_level" type="radio" value="update"/>現在の日付に更新</div>
</div>
<?php
}
endif;
//更新日時変更の入力フォーム
if( !function_exists( 'my_time_mod_form' ) ):
function my_time_mod_form() {
global $wp_locale, $post;
$tab_index = 0;
$tab_index_attribute = '';
if ( (int) $tab_index > 0 ) {
$tab_index_attribute = ' tabindex="' . $tab_index . '"';
}
//mysql2date = phpのdate()が受け付ける書式に変換
$jj_mod = mysql2date( 'd', $post->post_modified, false );
$mm_mod = mysql2date( 'm', $post->post_modified, false );
$aa_mod = mysql2date( 'Y', $post->post_modified, false );
$hh_mod = mysql2date( 'H', $post->post_modified, false );
$mn_mod = mysql2date( 'i', $post->post_modified, false );
$ss_mod = mysql2date( 's', $post->post_modified, false );
$year = '<label for="aa_mod" class="screen-reader-text">年' .
'</label><input type="text" id="aa_mod" name="aa_mod" value="' .
$aa_mod . '" size="4" maxlength="4"' . $tab_index_attribute . ' autocomplete="off" />年';
$month = '<label for="mm_mod" class="screen-reader-text">月' .
'</label><select id="mm_mod" class="mm" name="mm_mod"' . $tab_index_attribute . ">\n";
for( $i = 1; $i < 13; $i = $i +1 ) {
$monthnum = zeroise($i, 2);
$month .= "\t\t\t" . '<option value="' . $monthnum . '" ' . selected( $monthnum, $mm_mod, false ) . '>';
$month .= $wp_locale->get_month_abbrev( $wp_locale->get_month( $i ) );
$month .= "</option>\n";
}
$month .= '</select>';
$day = '<label for="jj_mod" class="screen-reader-text">日' .
'</label><input type="text" id="jj_mod" name="jj_mod" value="' .
$jj_mod . '" size="2" maxlength="2"' . $tab_index_attribute . ' autocomplete="off" />日';
$hour = '<label for="hh_mod" class="screen-reader-text">時' .
'</label><input type="text" id="hh_mod" name="hh_mod" value="' . $hh_mod .
'" size="2" maxlength="2"' . $tab_index_attribute . ' autocomplete="off" />';
$minute = '<label for="mn_mod" class="screen-reader-text">分' .
'</label><input type="text" id="mn_mod" name="mn_mod" value="' . $mn_mod .
'" size="2" maxlength="2"' . $tab_index_attribute . ' autocomplete="off" />';
printf( '%1$s %2$s %3$s @ %4$s : %5$s', $year, $month, $day, $hour, $minute );
echo '<input type="hidden" id="ss_mod" name="ss_mod" value="' . $ss_mod . '" />';
}
endif;
// それぞれの更新日時に変更する */
if( !function_exists( 'my_insert_post_data' )):
function my_insert_post_data( $data, $postarr ){
$mydata = isset( $_POST['update_level'] ) ? $_POST['update_level'] : null;
if( $mydata === 'edit' ) {
$aa_mod = $_POST['aa_mod'] <= 0 ? date('Y') : $_POST['aa_mod'];
$mm_mod = $_POST['mm_mod'] <= 0 ? date('n') : $_POST['mm_mod'];
$jj_mod = $_POST['jj_mod'] > 31 ? 31 : $_POST['jj_mod'];
$jj_mod = $jj_mod <= 0 ? date('j') : $jj_mod;
$hh_mod = $_POST['hh_mod'] > 23 ? $_POST['hh_mod'] -24 : $_POST['hh_mod'];
$mn_mod = $_POST['mn_mod'] > 59 ? $_POST['mn_mod'] -60 : $_POST['mn_mod'];
$ss_mod = $_POST['ss_mod'] > 59 ? $_POST['ss_mod'] -60 : $_POST['ss_mod'];
$modified_date = sprintf( '%04d-%02d-%02d %02d:%02d:%02d', $aa_mod, $mm_mod, $jj_mod, $hh_mod, $mn_mod, $ss_mod );
if ( ! wp_checkdate( $mm_mod, $jj_mod, $aa_mod, $modified_date ) ) {
unset( $data['post_modified'] );
unset( $data['post_modified_gmt'] );
return $data;
}
$data['post_modified'] = $modified_date;
$data['post_modified_gmt'] = get_gmt_from_date( $modified_date );
}
return $data;
}
add_filter( 'wp_insert_post_data', 'my_insert_post_data', 10, 2 );
endif;