web-dev-qa-db-ja.com

カスタム投稿タイプ「イベント」の公開投稿を傍受する方法

あるブログから別のブログにカスタム投稿タイプの「イベント」をコピーするプラグインを作成しようとしています。コピーするためのコードはすでに動作していますが、イベントが公開されたときにこの "add_action"フックを動作させることはできません。

add_action('publish_event', 'copy_event_to_mini_site' );

function copy_event_to_mini_site() {

code in here to copy relevant data from one blog to the other

}

私も試してみました:add_action('publish_post', 'copy_event_to_mini_site' );

それもうまくいきませんでした。

2
Chris

コーデックスを読んでください、それで私はついに答えを見つけました:

https://codex.wordpress.org/Plugin_API/Action_Reference/publish_post

最終的には :

カスタム投稿タイプ

カスタム投稿タイプに対してこのアクションをトリガーするには、publish _ {$ custom_post_type}を使用します。例えばあなたの投稿タイプが 'book'の場合

add_action( 'publish_book', 'post_published_notification', 10, 2 );
5
Syndyloo

transition_post_statusを使用すると、すべての投稿タイプを実行して、あるステータスから別のステータスに変更することができます。または新しい出版ポスト。

これが公式です WordPress Codec Page

function on_all_status_transitions( $new_status, $old_status, $post )       
{
   if ( $new_status != $old_status ) {
    // A function to perform actions any time any post changes status.
  }
  if ( $new_status != 'publish' ) {
    // A function to perform action when new post published.
  }
}
add_action(  'transition_post_status',  'on_all_status_transitions', 10, 3 );

これがすべてのカスタム投稿タイプとデフォルト投稿タイプに広く役立つことを願っています。

3
Kvvaradha

s_ha_dum - あなたはこれが正しいフックであることは正しかった - 私の悪い。

私は他のブログのDBテーブルをチェックしましたが、投稿は実際にはコピーされています - それは他のサイトのイベントの管理者リストには表示されません。だから私はなぜコピーされた投稿がリストに表示されないのかを理解しなければならないでしょう。

0
Chris
  • {old_status} から {new_status}
  • {status} _ {post_type}

利用可能な投稿ステータスは以下のとおりです。

  • new - 以前のステータスがない場合(つまり、 "save_post"が実行されるたびにこれらのフックが常に実行されることを意味します.
  • 公開 - 公開された投稿またはページ。
  • pending - 投稿保留中のレビュー。
  • ドラフト - ドラフトステータスの投稿。
  • 自動ドラフト - コンテンツなしで新しく作成された投稿。
  • future - 将来掲載予定のポスト。
  • private - ログインしていないユーザーには見えません。
  • inherit - リビジョンまたは添付ファイル(get_children()を参照).
  • ゴミ箱 - Postはゴミ箱に入っています(バージョン2.9で追加)。

必要に応じて、投稿ステータスの遷移ごとにイベントを作成できます。

0
Pravin Work