web-dev-qa-db-fra.com

Détecter le type de publication lors de l'exécution de publish_post

Actuellement, WordPress crée un XML Sitemap à chaque fois qu'une POST ou PAGE est PUBLISHED en utilisant cette action ...

add_action("publish_post", "create_news_sitemap");

Je ne fais pas le même processus mais pour un News Sitemap qui a des critères différents. En tant que tel, il ne peut afficher que les messages postérieurs à 48 heures.

Mon code fonctionne mais je voudrais l’optimiser légèrement.

Ainsi, lorsque add_action("publish_post", "create_news_sitemap"); est exécuté, je souhaite uniquement exécuter une fonction. Il s’agit d’un type de publication personnalisé nommé news qui publie une publication.

Est-ce quelque chose qui est possible?

lorsque l'action publish_post est exécutée, puis-je détecter quel POST_TYPE le met en action?

2
JasonDavis

publish_post vous donnera un deuxième paramètre si vous le demandez. Notez le quatrième paramètre de l'appel add_action. C'est votre objet post.

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

L'action publish_post obtient l'ID de publication en tant qu'argument, transmettez-la à get_post_type pour déterminer le type de publication:

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

Au lieu de vérifier le type de publication, vous pouvez également utiliser publish_{post_type }. Dans votre cas 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