Detectar tipo de postagem quando publish_post é executado

2

No momento, o WordPress cria um XML Sitemap sempre que POST ou PAGE é PUBLISHED usando essa ação ...

add_action("publish_post", "create_news_sitemap");

Eu não estou fazendo o mesmo processo, mas para um News Sitemap que tem critérios diferentes. Tal como só pode mostrar post que não são mais de 48 horas depois.

Eu tenho meu código funcionando, mas gostaria de otimizá-lo um pouco.

Então, quando add_action("publish_post", "create_news_sitemap"); for executado, gostaria de executar SOMENTE uma função, pois é um tipo de postagem personalizada chamado news que está publicando uma postagem.

Isso é algo que é possível?

quando a ação publish_post é executada, posso detectar qual POST_TYPE está colocando em ação?

    
por JasonDavis 23.05.2013 / 06:34

3 respostas

7

publish_post fornecerá um segundo parâmetro se você solicitar. Observe o quarto parâmetro da chamada add_action . Esse é o seu objeto de postagem.

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);
    
por s_ha_dum 23.05.2013 / 06:55
2

A ação publish_post obtém o ID do post como argumento, repasse para get_post_type para descobrir que tipo de post é:

function create_news_sitemap( $post_id ){
    $type = get_post_type( $post_id );
    if( 'news' == $type ){
        // do something
    }
}
add_action("publish_post", "create_news_sitemap");
    
por Milo 23.05.2013 / 06:51
1

Em vez de verificar o tipo de postagem, você também pode usar publish_{post_type } . No seu caso publish_news

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

Tags