管理画面に更新日枠を追加する
init.php
管理画面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;