从未真正想过,但这确实应该是一个好的选择。
从wp admin/includes/meta框调用日期选择器。php(第183行)为:
<div id="timestampdiv" class="hide-if-js"><?php touch_time(($action == \'edit\'),1,4); ?></div>
而touch\\u time()是在wp admin/includes/template中定义的。php(第550行)为:
/**
* {@internal Missing Short Description}}
*
* @since 0.71
*
* @param unknown_type $edit
* @param unknown_type $for_post
* @param unknown_type $tab_index
* @param unknown_type $multi
*/
function touch_time( $edit = 1, $for_post = 1, $tab_index = 0, $multi = 0 ) {
global $wp_locale, $post, $comment;
if ( $for_post )
$edit = ! ( in_array($post->post_status, array(\'draft\', \'pending\') ) && (!$post->post_date_gmt || \'0000-00-00 00:00:00\' == $post->post_date_gmt ) );
$tab_index_attribute = \'\';
if ( (int) $tab_index > 0 )
$tab_index_attribute = " tabindex=\\"$tab_index\\"";
// echo \'<label for="timestamp" style="display: block;"><input type="checkbox" class="checkbox" name="edit_date" value="1" id="timestamp"\'.$tab_index_attribute.\' /> \'.__( \'Edit timestamp\' ).\'</label><br />\';
$time_adj = current_time(\'timestamp\');
$post_date = ($for_post) ? $post->post_date : $comment->comment_date;
$jj = ($edit) ? mysql2date( \'d\', $post_date, false ) : gmdate( \'d\', $time_adj );
$mm = ($edit) ? mysql2date( \'m\', $post_date, false ) : gmdate( \'m\', $time_adj );
$aa = ($edit) ? mysql2date( \'Y\', $post_date, false ) : gmdate( \'Y\', $time_adj );
$hh = ($edit) ? mysql2date( \'H\', $post_date, false ) : gmdate( \'H\', $time_adj );
$mn = ($edit) ? mysql2date( \'i\', $post_date, false ) : gmdate( \'i\', $time_adj );
$ss = ($edit) ? mysql2date( \'s\', $post_date, false ) : gmdate( \'s\', $time_adj );
$cur_jj = gmdate( \'d\', $time_adj );
$cur_mm = gmdate( \'m\', $time_adj );
$cur_aa = gmdate( \'Y\', $time_adj );
$cur_hh = gmdate( \'H\', $time_adj );
$cur_mn = gmdate( \'i\', $time_adj );
$month = "<select " . ( $multi ? \'\' : \'id="mm" \' ) . "name=\\"mm\\"$tab_index_attribute>\\n";
for ( $i = 1; $i < 13; $i = $i +1 ) {
$monthnum = zeroise($i, 2);
$month .= "\\t\\t\\t" . \'<option value="\' . $monthnum . \'"\';
if ( $i == $mm )
$month .= \' selected="selected"\';
$month .= \'>\' . $monthnum . \'-\' . $wp_locale->get_month_abbrev( $wp_locale->get_month( $i ) ) . "</option>\\n";
}
$month .= \'</select>\';
$day = \'<input type="text" \' . ( $multi ? \'\' : \'id="jj" \' ) . \'name="jj" value="\' . $jj . \'" size="2" maxlength="2"\' . $tab_index_attribute . \' autocomplete="off" />\';
$year = \'<input type="text" \' . ( $multi ? \'\' : \'id="aa" \' ) . \'name="aa" value="\' . $aa . \'" size="4" maxlength="4"\' . $tab_index_attribute . \' autocomplete="off" />\';
$hour = \'<input type="text" \' . ( $multi ? \'\' : \'id="hh" \' ) . \'name="hh" value="\' . $hh . \'" size="2" maxlength="2"\' . $tab_index_attribute . \' autocomplete="off" />\';
$minute = \'<input type="text" \' . ( $multi ? \'\' : \'id="mn" \' ) . \'name="mn" value="\' . $mn . \'" size="2" maxlength="2"\' . $tab_index_attribute . \' autocomplete="off" />\';
echo \'<div class="timestamp-wrap">\';
/* translators: 1: month input, 2: day input, 3: year input, 4: hour input, 5: minute input */
printf(__(\'%1$s%2$s, %3$s @ %4$s : %5$s\'), $month, $day, $year, $hour, $minute);
echo \'</div><input type="hidden" id="ss" name="ss" value="\' . $ss . \'" />\';
if ( $multi ) return;
echo "\\n\\n";
foreach ( array(\'mm\', \'jj\', \'aa\', \'hh\', \'mn\') as $timeunit ) {
echo \'<input type="hidden" id="hidden_\' . $timeunit . \'" name="hidden_\' . $timeunit . \'" value="\' . $$timeunit . \'" />\' . "\\n";
$cur_timeunit = \'cur_\' . $timeunit;
echo \'<input type="hidden" id="\'. $cur_timeunit . \'" name="\'. $cur_timeunit . \'" value="\' . $$cur_timeunit . \'" />\' . "\\n";
}
?>
<p>
<a href="#edit_timestamp" class="save-timestamp hide-if-no-js button"><?php _e(\'OK\'); ?></a>
<a href="#edit_timestamp" class="cancel-timestamp hide-if-no-js"><?php _e(\'Cancel\'); ?></a>
</p>
<?php
}
从那里开始工作看起来并不困难。。。将尝试。