Dans un portail d'actualités utilisant WordPress, ils doivent télécharger plusieurs nouvelles à la fois, à une certaine période de la journée, généralement après 22 heures ( aujourd'hui ). Mais ils insèrent des nouvelles pour le lendemain ( demain ). Donc, de manière WordPress, ils ont besoin de planifier les nouvelles (post) à chaque fois lors de la publication.
Le même travail récurrent - éditez l’heure, réglez la date sur la date à venir (19), modifiez l’Heure sur 12 et la Minute sur 01. Cela prend du temps et est un peu dérangeant.
Existe-t-il un moyen de faire une chose commune pour eux afin qu’ils puissent le définir une fois et télécharger tous les articles à la toute nouvelle heure? Et peut réinitialiser le timing à tout moment?
Voici un sketch d’une autre idée, dans laquelle nous créons des raccourcis de planification pour faciliter la tâche des utilisateurs:
Nous pouvons utiliser le post_submitbox_misc_actions
pour ajouter des champs supplémentaires à la boîtesubmit/:
/**
* 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
});
où nous pouvons ensuite modifier leinsérer les données postalesen conséquence via le filtre 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 );
J'espère que vous pourrez adapter cela à vos besoins.
D'accord, j'ai une solution temporaire, suggérée par l'un de mes collègues non membres de WP, M. Shamim. Et testé dans WP 4.0 avec succès - Il s’agit de la publication en bloc à partir de brouillons .
L'idée est que, quels que soient la série de messages ou le groupe de messages à publier, sauvegardez-les d'abord sous forme de brouillon. Ensuite, à l'heure,quand c'est l'heure, vérifiez-les tous en un groupe, choisissez Modifier dans le menu déroulant Bulk Actions
, puis, dans le panneau développé, choisissez "Publié" dans le statut, puis enfin frappé Mise à jour .
Mais il y a un inconvénient: vous devez revenir à la liste des messages lorsque vous souhaitez tous les publier.