Kategoriler
WordPress

İlk kez yayınlanan post hook

transition_post_status ile ilk kez yayınlanan veya daha önce yayınlanmış olan gönderileri ayrıştırmak. publish_post yerine kullanılabilir.

WordPress’in gönderi yayınlanınca çalışan kancası publish_post tüm eski ve yeni gönderilerde çalışır, yani bir gönderiyi düzenleyip yayınladığınızda da çalışır.

Bazen sadece yeni girilmiş bir gönderide çalışmasını istediğiniz fonksiyonlar olabilir bu durumda transition_post_status kancasını kullanmak mantıklı ve kolay. developer.wordpress.org/reference/hooks/transition_post_status/

Örnek:

if (
    $old_status == $new_status ||
    ($old_status != "publish" && $new_status != "publish")
){
    return;
}

Yukarıdaki örnek gönderinin daha önce yayınlanmamış olduğunu kontrol eder ve eğer daha önce yayınlanmış bir gönderi ise çalışmaz, bunu şöyle örneğin kullanabiliriz:

add_action('transition_post_status', 
function( $new_status, $old_status, $post ){
    if ( $new_status == 'publish' && $old_status != 'publish' ){
        $author = "foobar";
        $message = "Yeni bir gönderi yayınlandı.";
        wp_mail($author, "Sitede yeni gönderi", $message);
   }
}, 10, 3 );

Yukarıdaki örnekte siteye yeni bir gönderi eklendiğinde(veya sayfa ya da herhangi bir gönderi) $author’a mail gönderiyor.

post_type kullanarak gönderi tipine göre ayrıştırılabilir zira bu fonksiyonla siteye girilen ve yayınlanan sayfa, özel gönderi tipi, ürün herhangi bir şey için çalışır, if’e aşağıdaki eklenirse sadece post tipi gönderi

if (get_post_type($post) !== 'post')