web-dev-qa-db-fra.com

Plugin pour changer la catégorie d'un article en fonction de sa date?

Existe-t-il un plugin pour Wordpress qui modifiera la catégorie d'un article en fonction de la durée de son existence?

J'ai vu d'autres plugins Wordpress qui utilisent une bibliothèque appelée "simple tarte" pour gérer les tâches chronométrées d'un wp-blog, y a-t-il un qui fait quelque chose comme ça?

2
leeand00

Je ne connais pas de plugin mais vous pouvez utiliser la fonction wp_schedule_single_event.

Commencez par créer une méta-boîte qui prend pour valeurs: le temps de suppression et la catégorie dans laquelle nous voulons la définir une fois retirées de la catégorie sélectionnée.

 /* hook meta box */
add_action("admin_init", "admin_init");

/* hook meta box function */
function admin_init(){
    add_meta_box("Featured Removal", "Featured Removal", "Featured_Removal_options", "post", "normal", "high");
}

/* display meta box */
function Featured_Removal_options() {
    global $post;
    $custom = get_post_custom($post->ID);
    echo '<input type="hidden" name="wp_meta_box_nonce" value="', wp_create_nonce('Featured Removal'), '" />';
    <?
    <table border=0>
    <tr>
        <th style="width:20%"><label for="Remove_after">Remove From Featured After:</label></th>
        <td><input type="text" name="Remove_after" id="Remove_after" value="<?php $custom['Remove_after'] ? $custom['Remove_after'] : ''; ?>"/><br/>
        Enter time in Seconds Ex: 1 Hour = 3600 Seconds , 1 Day = 86400 Seconds.
        </td>
    </tr>
    <tr>
        <th style="width:20%"><label for="Remove_after_to_cat">Remove From Featured To Category:</label></th>
        <td><input type="text" name="Remove_after_to_cat" id="Remove_after_to_cat" value="<?php $custom['Remove_after_to_cat'] ? $custom['Remove_after_to_cat'] : ''; ?>"/><br/>
        Enter the category id of the category you want to remove the post after the time has passed. if more then one separate by commas Ex: 12,13,24
        </td>
    </tr>
    </table>
<?php }

/* save meta box hook*/
add_action('save_post', 'save_Featured_Removal_options');

/* save meta box function*/
function save_Featured_Removal_options($post_id) {
    if (!wp_verify_nonce($_POST['wp_meta_box_nonce'], "Featured Removal")) {
        return $post_id;
    }
    // check autosave
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return $post_id;
    }
    If (isset($_POST['Remove_after']) && isset($_POST['Remove_after_to_cat'])){
        //cerate scheduled event
        $time = time() + $_POST['Remove_after'];
        wp_schedule_single_event($time, 'Clean_my_featured',$post_id);
        //save meta data
        update_post_meta($post_id, 'Remove_after', $_POST['Remove_after']);
        update_post_meta($post_id, 'Remove_after_to_cat', $_POST['Remove_after_to_cat']);
    }    
}

Observez maintenant la fonction de sauvegarde de la boîte méta. Si l'utilisateur a entré à la fois le délai de suppression et l'identifiant de la catégorie pour la nouvelle catégorie, un événement est programmé avec wp_schedule_single_event et accrochez-le à " Clean_my_featured ".

Alors maintenant, il ne reste plus qu'à ajouter l'action pour ce hook et la fonction de suppression elle-même:

 /* hook removal event function */
    add_action('Clean_my_featured','remove_post_from_featured');

// the function that removes a post form a category and sets a new one
function remove_post_from_featured($post_id) {
    $cats = get_post_meta($post_id, 'Remove_after_to_cat', true);
    wp_set_post_terms( $post_ID, $cats, 'category');
}

Je n'ai aucune idée si cela fonctionne, mais il devrait donc tout simplement être copié dans un fichier de plugin ou dans le fichier themes.php de votre thème et cela devrait fonctionner.

sinon faites le moi savoir.

2
Bainternet