wordpressのphpで、『投稿経過時間が指定時間よりも長い』投稿を取得するコードを考えています。
content.phpにて各投稿ごとに削除時間をメタキーに保存しています。
php
1<?php 2$post_time = get_post_time( 'U', true ); 3$now_time = time(); 4?> 5 6<?php 7if(!empty($post->left_second)): 8 $left_time = get_post_meta(get_the_ID(), 'left_second', true); //left_secondはカスタムフィールドで各投稿ごとに指定 9 settype ($left_time, "int"); 10 $dead_line = $post_time + $left_time; 11 add_post_meta( $post->ID, 'dead_line_key', $dead_line); 12 get_post_meta(get_the_ID(), 'dead_line_key', true); 13 settype ($dead_line_key, "int"); 14endif; 15?> 16
こちらのサイトを参考に、cronで読み込むphpファイルを作成したのですが、なかなかうまくいきません。何か根本的に間違えているのでしょうか?
http://keylopment.com/faq/3368/
php
1delete_post( 2 array( 3 'posts_per_page' => -1, 4 'post_type' => 'post', 5 'meta_key' =>'dead_line_key', 6 'meta_query' => array( 7 'relation' => 'AND', 8 array( 9 'key' => 'dead_line_key', 10 'value' => time(), 11 'compare' => '<=', 12 ), 13 ) 14) 15
> で可能だと思うのですが、
ということであれば当然試して結果は分かっていると思います。そうであれば、試した結果を書いて、期待とどう違うのかを質問欄に追記した方が良さそうです。
各投稿の値を都度計算して検索するのは、WP_Query が苦手な条件ですね。
posts_where フック等を利用して、SQL で条件を記載する必要があると思います。
カスタムフィールドの値を 有効期限のような 日付に変更できるのであれば、 meta_query で検索できると思います。
SurferOnWwwさん
ご指摘ありがとうございます。ただ、今回は『記事を取得してくるコード』についてご質問させていただいてまして、自分の書いたコードだと不十分でした。
CHERRYさん
いつもご回答本当にありがとうございます。
meta_queryを調べてみると、できそうな可能性が見えてきました。一度調べてみて挑戦してみます。ありがとうございます
回答1件
あなたの回答
tips
プレビュー