お世話になります。
WordPressでカスタム投稿にカスタムタクソノミーでカテゴリ分けしています。
そのカスタム投稿に表示期限を設定して、期限が来たらカテゴリを別のものに変更するということをPost Expiratorプラグインを使って行っているのですが、別途Advanced Custom Fieldsプラグインも使用しておりましてどうせならAdvanced Custom Fieldsプラグインで同じ事をやってしまおうと色々と試みていますが上手くいきません。
ちなみに投稿画面のWordPess標準のカスタムフィールド欄は既に登録されているカスタムフィールドがズラズラと表示されるため意図して使っていません。
参考にさせていただいたサイトがこちらです。
https://www.sofplant.com/blog/tech/schedule-to-draft-or-trash/
こちらのサイトの内容では期限が来たら投稿をゴミ箱に入れるパターンです。
function my_expire_event($pid) { if (get_post_meta($pid, 'close_time', true) != '' && date_i18n('Y-m-d H:i:s') < get_post_meta($pid, 'close_time', true)) { // 設定されていて未来の日付ならスケジュールをセット $time_stamp = strtotime(get_post_meta($pid, 'close_time', true) . ' JST'); wp_schedule_single_event($time_stamp, 'my_new_event', array($pid)); } } add_action('save_post','my_expire_event'); // スケジュールされる動作を記述 function my_update_post($pid) { wp_update_post(array( 'ID' => $pid, 'post_status' => 'trash' ) ); } add_action('my_new_event', 'my_update_post');
このまま試すと期限を過ぎたらゴミ箱に入れられました。
私の場合は公開したままカテゴリが変わればいいので、なばらばと以下のようにしてみましたが動きませんでした。
function my_expire_event($post_id) { if (get_post_meta($post_id, 'close_time', true) != '' && date_i18n('Y-m-d H:i') < get_post_meta($post_id, 'close_time', true)) { // 設定されていて未来の日付ならスケジュールをセット $time_stamp = strtotime(get_post_meta($post_id, 'close_time', true) . ' JST'); wp_schedule_single_event($time_stamp, 'my_new_event', array($post_id)); } } add_action('save_post','my_expire_event'); // スケジュールされる動作を記述 function my_update_post($post_id) { $cat = get_post_meta($post_id, 'category', true); wp_set_post_terms( $post_id, $cat , true ); wp_update_post(array( 'ID' => $post_id, 'post_status' => 'publish' ) ); } add_action('my_new_event', 'my_update_post');
カスタムフィールドは close_time と category を登録済です。
ちなみにカテゴリは2つあるのですが、投稿公開時は2つ共設定しているのを、期限が来たら一つだけに変更したいのですが
wp_update_postでそこも実現できるのでしょうか。
以上、よろしくお願い致します。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/05/13 13:52
退会済みユーザー
2017/05/14 08:45