Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I currently have WordPress build an XML Sitemap everytime a POST or PAGE is PUBLISHED by using this Action...

add_action("publish_post", "create_news_sitemap");

I am not doing the same process but for a News Sitemap which has different criteria. Such as it can only show post that are no older then 48 hours.

I have my code working but I would like to optimize it slightly.

So when add_action("publish_post", "create_news_sitemap"); is ran, I would like to ONLY run a function is it is a Custom Post Type named news that is Publishing a post.

Is this something that is possible?

when the publish_post action is ran, can I detect which POST_TYPE is setting it into action?

share|improve this question

2 Answers 2

up vote 6 down vote accepted

publish_post will give you a second parameter if you ask for it. Notice the fourth parameter of the add_action call. That is your post object.

function run_on_publish_wpse_100421( $postid, $post ) { 
  if ('news' == $post->post_type) 
    // your code
share|improve this answer

The publish_post action gets the post ID as argument, pass that to get_post_type to find out what type of post it is:

function create_news_sitemap( $post_id ){
    $type = get_post_type( $post_id );
    if( 'news' == $type ){
        // do something
add_action("publish_post", "create_news_sitemap");
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.