###前提・実現したいこと
Wordpressを利用した情報集約サイトを作成しています。現在、フォームの情報をまとめたcsvを利用した記事の一括登録機能を作成しています。その中で以下の機能の2番がうまく実現せずに困っています。
- Really Simple CSV Importerとカスタムフィールドテンプレートを利用して、csvで記事をまとめてインポートし、カスタムフィールドに値を入れる
http://notnil-creative.com/blog/archives/3465
- カスタムフィールドの
iscsv
に値があるか(csvでは"1"を入れています)を判定させ、csvでインポートしている場合は同じくカスタムフィールドのpub_end
に記入された日時になったらカテゴリーをpast
に変更する
###発生している問題・エラーメッセージ
1の部分は成功しています。
2について、$term
にカテゴリーの値が入っている所までは確認できたのですが、該当する記事を取得することができていないと考えています。
その後の処理が正しいかもまだ検証できていません。
原因、もしくは目的の別達成方法などわかる方がいましたら、ご教授いただけると幸いです。
###試したこと
この記事を参考に、該当するpostの取得には va-simple-expiresを参考に組み立てています。[「利用させていただいています。」からご指摘により変更]
term_exists()
が動いているかはDebug Bar Consoleを利用して確認しました。
pub_end
には"2016/6/6"のような値を保存しています。
###該当のソースコード
dr-simple-category-changer.php
php
1<?php 2if ( !function_exists( 'dr_simple_category_changer_setup' ) ) : 3 function dr_simple_category_changer_setup() { 4 if ( !class_exists( 'DR_SIMPLE_CATEGORY_CHANGER_SETUP' ) ) { 5 class DR_SIMPLE_CATEGORY_CHANGER_SETUP extends _DR_SIMPLE_CATEGORY_CHANGER { 6 protected function __construct() { 7 parent::__construct(); 8 } 9 } 10 } 11 12 $dr_simple_category_changer = DR_SIMPLE_CATEGORY_CHANGER_SETUP::instance(); 13 } 14endif; // dr_simple_category_changer_setup 15add_action( 'plugins_loaded', 'dr_simple_category_changer_setup' ); 16
** 以下は同一ファイル内class _DR_SIMPLE_CATEGORY_CHANGER
内になります**
php
1protected function __construct() { 2 add_action( 'plugins_loaded', array( &$this, 'plugins_loaded' ) ); 3 add_action( 'init', array( &$this, 'simple_category_changer' ) ); 4}
php
1 2function simple_category_changer() { 3 global $wpdb; 4 5 $result = $wpdb->get_results( $wpdb->prepare(" 6 SELECT postmetadate.post_id 7 FROM $wpdb->postmeta AS postmetadate, $wpdb->postmeta AS postmetadoit, $wpdb->posts AS posts 8 WHERE postmetadoit.meta_key = 'iscsv' 9 AND postmetadoit.meta_value = '1' 10 AND postmetadate.meta_key = 'pub_end' 11 AND postmetadate.meta_value <= %s 12 AND postmetadate.post_id = postmetadoit.post_id 13 AND postmetadate.post_id = posts.ID 14 AND posts.post_status = 'publish' 15 ", current_time("mysql") ) ); 16 17 18 $term = term_exists('past', 'category'); 19 20 21 if ( ! empty( $result ) && !empty($term )) : 22 $update_post = array(); 23 foreach ( $result as $cur_post ) : 24 remove_action( 'simple_category_changer','save_post' ); 25 wp_set_post_status($cur_post->post_id, $term->$term_id, 'category', false); 26 add_action( 'simple_category_changer','save_post' ); 27 endforeach; 28 endif; 29 30}