web-dev-qa-db-ja.com

この記事で関連投稿のためにtransientを使うには?

どのように私は関連のポストのためにこのコードでtransientを使うことができますか?

$related = get_posts(array(
    'author' => $author_id,
    'category__in' => wp_get_post_categories($post->ID),
    'numberposts' => 8,
    'orderby' => 'Rand',
    'post__not_in' => array(
        $post->ID
    )
));
if ($related)
    foreach ($related as $post) {
        setup_postdata($post);
        contenedor();
    }
wp_reset_postdata();
1
EntrepreneurVE

トランジェントを設定した場合、それはwp_optionsテーブルに入るでしょう...それはおそらくあなたがそのように各ポストのためにトランジェントを作成することになるのでそれをすることは最善ではないでしょう。

ポストメタとして保存してから、自分のデータの有効期限を記録して簡単な確認で自分で期限切れにする方が合理的です。例えば:

$related = get_post_meta($post->ID, 'related_posts');
if ($related) {
    $expires = get_post_meta($post->ID, 'related_expires');
    if ($expires > time()) {
        $related = false;
        delete_post_meta($post->ID, 'related_posts');
        delete_post_meta($post->ID, 'related_expires');
    }
} 
if (!$related) {
    $related = get_posts(array(
        'author' => $author_id,
        'category__in' => wp_get_post_categories($post->ID),
        'numberposts' => 8,
        'orderby' => 'Rand',
        'post__not_in' => array(
            $post->ID
        )
    ));
    if ($related) {
         add_post_meta($post->ID, 'related_posts', $related);
         add_post_meta($post->ID, 'related_expires', time()+(24*60*60));
    }
}
if ($related) {
    foreach ($related as $post) {
        setup_postdata($post);
        contenedor();
    }
}
wp_reset_postdata();
1
majick