web-dev-qa-db-ja.com

Publish_postが実行されたときに投稿タイプを検出

私は現在、このアクションを使用して、POSTまたはPAGEPUBLISHEDであるたびに、WordPressにXML Sitemapを構築させています...

add_action("publish_post", "create_news_sitemap");

私は同じプロセスをしているのではなく、基準が異なるNews Sitemapに対して行っています。 48時間以上経過していない投稿のみを表示できます。

私は自分のコードを動かしていますが、少し最適化したいと思います。

add_action("publish_post", "create_news_sitemap");が実行されたとき、私は関数を実行したいのですが、それは投稿を公開するnewsという名前のカスタム投稿タイプです。

これは可能ですか。

publish_postアクションが実行されたとき、どのPOST_TYPEがそれをアクションに設定しているかを検出できますか?

2
JasonDavis

publish_postはあなたがそれを要求した場合あなたに2番目のパラメータを与えるでしょう。 add_action呼び出しの4番目のパラメーターに注目してください。それがあなたの投稿オブジェクトです。

function run_on_publish_wpse_100421( $postid, $post ) { 
  if ('news' == $post->post_type) 
    // your code
  }
}
add_action('publish_post','run_on_publish_wpse_100421',1,2);
7
s_ha_dum

publish_postアクションは投稿IDを引数として取得し、それを get_post_type に渡して、投稿の種類を調べます。

function create_news_sitemap( $post_id ){
    $type = get_post_type( $post_id );
    if( 'news' == $type ){
        // do something
    }
}
add_action("publish_post", "create_news_sitemap");
2
Milo

投稿タイプを確認する代わりに、publish_{post_type }を使用することもできます。あなたの場合はpublish_news

function run_on_publish_wpse_100421( $postid, $post ) { 
    // your code
}
add_action('publish_news','run_on_publish_wpse_100421',1,2);
1
Manny Fleurmond