web-dev-qa-db-ja.com

付箋投稿スケジュールを設定する(自動)

編集: 付箋を設定し、日付を2016年7月7日に設定すると、現在機能しています。私のコードはこれまでのところ:私はそれが付箋になったときに投稿の投稿日を変更するためにこれを追加しました:

//        Update post timestamp
$newdate = current_time('mysql');
        $my_post = array(
            'ID' => $post_id,
            'post_date' => $newdate
        );
        wp_update_post($my_post);
//        Update post timestamp

また、これがスティッキーで7日以上経過している場合は、ポストのスティッキングを解除します。

function deleteOldStickies($post_id, $postDate) {
    $postDate = strtotime($postDate);
    $currentTime = strtotime(time());
    $expire = $currentTime + strtotime('-1 day');
    if ($postDate < $expire && is_sticky()) {
        unstick_post($post_id);
        echo 'Обявата е изтекла!';
    }
}

Content.phpでは、この関数を次のように呼び出します。

<?php echo deleteOldStickies($post->ID, $post->post_date); ?>

私の上記の情報からの私のさらなる質問は - 私は重要な何かを見逃しています、それはライブの環境でうまくいくでしょうか?

5
knif3r

OKこれがうまくいったことは、私が使ったコードです。それがベストプラクティスであるかどうかはわかりませんが、確かにうまくいきます。

フロントエンドから投稿をスティッキーにするfunctions.phpでは、post_dateを今日に更新するためにこれを追加し、スティッキー期間を制御できるようにしました。

$newdate = current_time('mysql');
$my_post = array(
    'ID' => $post_id,
    'post_date' => $newdate
);
wp_update_post($my_post);

Functions.php(私はテスト目的で-1日を使用しました、あなたが$ expire変数に-7日をタイプするならば、それは7日より古いstickypostsを焦がさないでしょう。

//Delete Old Stickies START
function deleteOldStickies($post_id, $postDate) {
    $postDate = strtotime($postDate);
    $expire = strtotime('-1 day') + get_option( 'gmt_offset' ) * 3600;
    if ($postDate < $expire && is_sticky()) {
        unstick_post($post_id);
    }
}

//Delete Old Stickies END

ループの中 :

<?php echo deleteOldStickies($post->ID, $post->post_date); ?>
3
knif3r