web-dev-qa-db-fra.com

Comment planifier plusieurs publications tout en ajoutant de nouvelles

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.

scheduling a post

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?

4
Mayeenul Islam

Voici un sketch d’une autre idée, dans laquelle nous créons des raccourcis de planification pour faciliter la tâche des utilisateurs:

scheduling shortcuts

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.

5
birgire

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 .

bulk draft selection to edit

bulk publish multiple drafts

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.

1
Mayeenul Islam