这里有一个sketch 另一个想法,我们在那里创造scheduling shortcuts 为方便用户,请执行以下操作:
我们可以使用post_submitbox_misc_actions
要向提交框添加额外字段,请执行以下操作:
/**
* Scheduling-Shortcuts fields.
*
* @see http://wordpress.stackexchange.com/a/168748/26350
*/
add_action( \'post_submitbox_misc_actions\', function() {
if( ! current_user_can( \'publish_posts\' ) )
return;
?>
<div style="padding: 2px 10px;">
<h4><?php _e( \'Scheduling shortcuts:\' ); ?></h4>
<ul class="schedule-shortcuts">
<li>
<input type="radio" value="current"
name="wpse_schedule_shortcut"
id="shcedule-shortcut-0" checked="checked" />
<label for="shcedule-shortcut-0"><?php _e( \'Current settings\' );?></label>
</li>
<li>
<input type="radio" value="tomorrow_at_12"
name="wpse_schedule_shortcut" id="shcedule-shortcut-1" />
<label for="shcedule-shortcut-1"><?php _e( \'Tomorrow @12\' );?></label>
</li>
</ul>
<?php wp_nonce_field( \'schedule_shortcut_action\',\'schedule_shortcut_field\'); ?>
</div>
<?php
});
然后,我们可以通过
wp_insert_post_data
过滤器:
/**
* Scheduling-Shortcuts post data handling.
*
* @see http://wordpress.stackexchange.com/a/168748/26350
*/
add_filter( \'wp_insert_post_data\', function( $data, $postarr ) {
if( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE )
return $data;
if( ! current_user_can( \'publish_posts\' ) )
return $data;
if( ! isset( $postarr[\'post_type\'] ) || \'post\' !== $postarr[\'post_type\'] )
return $data;
if( ! isset( $postarr[\'action\'] ) || \'editpost\' !== $postarr[\'action\'] )
return $data;
if ( ! isset( $postarr[\'schedule_shortcut_field\'] )
|| !wp_verify_nonce($postarr[\'schedule_shortcut_field\'],\'schedule_shortcut_action\')
)
return $data;
if( isset( $postarr[\'wpse_schedule_shortcut\'] )
&& \'tomorrow_at_12\' === $postarr[\'wpse_schedule_shortcut\']
)
{
$data[\'post_status\'] = \'future\';
$data[\'post_date\'] = date( \'Y-m-d H:i:s\', strtotime( "+1 day 00:00" ) );
$data[\'post_date_gmt\'] = gmdate( \'Y-m-d H:i:s\', strtotime( "+1 day 00:00" ) );
}
return $data;
}, 10, 2 );
希望您可以根据自己的需要进一步调整。