サポート » 使い方全般 » WordPressのアクションフック、save_post について

  • 解決済 rabupon

    (@rabupon)


    save_postのアクションフックで
    ステータスの状態によってタイトルを変更し、
    そのあと、get_postを使ってタイトルを取得しても(①)
    最新の情報が取得できないのですが。

    add_action(‘save_post’, ‘save_post_function’);
    function save_post_function($post_id){
    global $wpdb;
    $result = $wpdb->query(‘UPDATE ‘ . $pce_db_posts . ‘ SET post_title =\’1111\’ WHERE ID = ‘ . $post_id.’ AND post_status =\’publish\”);
    $result = $wpdb->query(‘UPDATE ‘ . $pce_db_posts . ‘ SET post_title =\’2222\’ WHERE ID = ‘ . $post_id.’ AND post_status =\’future\”);

    $post = get_post($post_id);
    $post->post_title・・・・①
    }

    例えば、statusが「publish」で保存されたとした場合、①では「1111」としてタイトルを取得したいのです。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • $pce_db_postsはどこで宣言されていて何が入っている変数でしょうか?
    投稿テーブルを指定しているというのなら$wpdb->postsに変更してみてください。

    トピック投稿者 rabupon

    (@rabupon)

    すいません。
    $pce_db_postsには
    $pce_db_posts = $wpdb->prefix . ‘posts’;
    として、宣言されています。

    モデレーター jim912

    (@jim912)

    get_post は、オブジェクトキャッシュにデータが存在する場合は、キャッシュデータを使用します。
    このキャッシュデータをクリアしないと、データベースを更新した場合でも古い値を返してしまいます。

    このキャッシュをクリアするには、clean_post_cache を用いてください。
    wp_insert_post の関数内でもデータベースの更新後に

    clean_post_cache( $post_ID );
    
    $post = get_post($post_ID);

    としていて、キャッシュの更新を行っていることが分かります。

    トピック投稿者 rabupon

    (@rabupon)

    ありがとうございます。
    キャッシュをクリアすると、思い通りのデータが取得できました。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「WordPressのアクションフック、save_post について」には新たに返信することはできません。