サポート » 使い方全般 » 予約投稿時の挙動について、future_to_publish がhookとして機能しない

  • 解決済 tamura.kei

    (@tamurakei)


    予約投稿を公開した時の正しい Hook の指定の仕方が分からず困っております。

    add_action(‘future_to_publish’, ‘my_function’);
    add_action(‘draft_to_publish’, ‘my_function’);
    function my_function($post) {
    // 投稿が公開された時の処理
    }
    というコードで、投稿が公開された際に所定の処理をしようとしているのですが、予約投稿が公開されたときに処理が行われません。管理画面内で下書き→公開とステータスを変更した場合は正しく処理行われており、draft_to_publish は正しく動作しています。future_to_publish は Hookとして機能しないのでしょうか?

    代替として、以下のように transition_post_status を Hook としてみたのですが、こちらも管理画面内で下書き→公開の際には正しく動作するのですが、予約投稿公開時には動作しておりません。
    add_action(‘transition_post_status’, ‘my_function’, 12, 3 );
    function my_function($new_status , $old_status , $post ){
    if ($old_status == ‘future’ && $new_status == ‘publish’ ) {
    // 投稿が公開された時の処理
    }
    }

    ・予約投稿は正しく動作しており指定時間に投稿が公開されています。
    ・下書き→公開時には処理がなされており、投稿が公開された時の処理は正しいことが確認できています。
    ・投稿公開時の処理は、投稿のタイトル、内容、カスタムフィールドをXMLで記述したファイルを作成するという処理です。
    ・環境は以下のとおりです。
    WordPress Ver3.5.1
    php 5.3.10
    nginx 1.2.6
    VPS利用

    正しく動作せるには、どのようにHookを指定するのが良いのでしょうか?
    どなたかお教えいただけましたら大変ありがたいです。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • こんにちは

    予約投稿について、以下のコードをテストしてみました。

    予約時刻に、ルートにhogehoga.txtが作られているようです。

    add_action( 'save_post','my_cron');
    function my_cron($content){
    	global $post;
    	file_put_contents('hogehoga.txt',date('ymd h i s') );
    }

    トピック投稿者 tamura.kei

    (@tamurakei)

    結局、以下のように処理を分けることで思う通りに動作しました。

    function my_function_futre_post(){
    予約投稿時の処理
    }
    add_action('publish_future_post', 'my_function_futre_post',10,2);
    
    function my_function_post(){
    予約投稿以外の時の処理
    }
    add_action('new_to_publish', 'my_function_post',10,2);
    add_action('pending_to_publish', 'my_function_post',10,2);
    add_action('private_to_publish', 'my_function_post',10,2);
    add_action('auto-draft_to_publish', 'my_function_post',10,2);
    add_action('draft_to_publish', 'my_function_post',10,2);
    add_action('publish_to_publish', 'my_function_post',10,2);
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「予約投稿時の挙動について、future_to_publish がhookとして機能しない」には新たに返信することはできません。