web-dev-qa-db-de.com

Plugin zum Ändern der Kategorie eines Beitrags basierend auf dem Beitragsdatum?

Gibt es ein Plugin für Wordpress, das die Kategorie eines Posts ändert, basierend darauf, wie lange dieser Post existiert?

Ich habe andere Wordpress-Plugins gesehen, die eine Bibliothek namens "simple pie" verwenden, um die zeitgesteuerten Aufgaben eines WP-Blogs zu verwalten. Gibt es eine, die so etwas tut?

2
leeand00

Ich kenne kein Plugin, aber Sie können die Funktion wp_schedule_single_event verwenden.

Erstellen Sie zuerst eine Meta-Box, die folgende Werte annimmt: Zeit für das Entfernen und welche Kategorie, in die sie gesetzt werden soll, wenn sie aus dem Feature entfernt wird.

 /* 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']);
    }    
}

Sehen Sie sich nun die Funktion zum Speichern der Meta-Box an. Wenn der Benutzer sowohl die Zeit zum Entfernen als auch die Kategorie-ID für die neue Kategorie eingegeben hat, setzen wir ein geplantes Ereignis mit wp_schedule_single_event und verknüpfen es mit " Clean_my_featured ".

Jetzt müssen wir nur noch die Aktion für diesen Hook und die Funktion für das Entfernen selbst hinzufügen:

 /* 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');
}

Ich habe keine Ahnung, ob dies funktioniert, aber es sollte so einfach alles in eine Plugin-Datei oder Ihre themes functions.php-Datei kopieren und es sollte funktionieren.

wenn nicht lass es mich wissen.

2
Bainternet