it-swarm.com.de

Ermitteln Sie den Post-Typ, wenn publish_post ausgeführt wird

Ich lasse derzeit in WordPress jedes Mal einen XML Sitemap erstellen, wenn eine POST oder PAGE eine PUBLISHED ist, indem ich diese Aktion verwende ...

add_action("publish_post", "create_news_sitemap");

Ich mache nicht den gleichen Prozess, sondern für einen News Sitemap, der andere Kriterien hat. Zum Beispiel kann es nur Posts anzeigen, die nicht älter als 48 Stunden sind.

Mein Code funktioniert, ich möchte ihn jedoch leicht optimieren.

Wenn add_action("publish_post", "create_news_sitemap"); ausgeführt wird, möchte ich NUR eine Funktion ausführen, bei der es sich um einen benutzerdefinierten Beitragstyp mit dem Namen news handelt, der einen Beitrag veröffentlicht.

Ist das etwas was möglich ist?

kann ich feststellen, bei welcher POST_TYPE-Aktion die publish_post -Aktion ausgeführt wird?

2
JasonDavis

publish_post gibt Ihnen einen zweiten Parameter, wenn Sie danach fragen. Beachten Sie den vierten Parameter des Aufrufs von add_action. Das ist dein Beitragsobjekt.

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

Die Aktion publish_post erhält die Beitrags-ID als Argument. Übergeben Sie diese an get_post_type , um herauszufinden, um welche Art von Beitrag es sich handelt:

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

Anstatt nach dem Beitragstyp zu suchen, können Sie auch publish_{post_type } verwenden. In deinem Fall 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