Kategoriler
WordPress

WordPress tag count ve post count

WordPress’de yazıya ait etiketlerin sayısı, o etiketlerin yazı sayısını bulmak ve kullanım örneği.

WordPress tag/etiket için bazı durumlarda faydalı bir fonksiyon olabilecek örnekler paylaşacağım, bu sadece standart kategori ve etiketler için değil custom taxonomyler ve cutom postlar için de kullanılabilir. Bizim buradaki örneğimiz standart post ve post_tag için.

Öncelikle bir yazıya eklenmiş tag sayısını almak için aşağıdaki gibi bir fonksiyon kullanılabilir:

$terms = get_the_terms($post->ID,'post_tag');
$termscount = count($terms);
// $termscount <- yazıya eklenmiş etiket sayısı

Yazıya eklenmiş etiketler 10adetten fazla ise şeklinde bir kullanım yapılabilir, bunun yanında yazıya eklenen etiketlere ait yazı sayısı da şöyle bulunabilir:

$terms_slugs = array();
$post_count = 0;
foreach ($terms_slugs as $slug){
    $term = get_term_by('slug',$slug,'post_tag');
    $post_count += $term->count;
}
// $term->count <- etikete ait yazı sayısı

Ve son olarak tümünü örnek olarak aşağıdaki gibi kullanabiliriz, aşağıdaki fonksiyon term_links-post_tag hookına eğer yazıya 10 adetten fazla etiket eklenmiş ise etiketlerden 10 adetten az post bulunanları kaldırmasını söylüyor, değilse normal çalışır.

add_filter("term_links-post_tag", function ($links){
/* yazı etiketlerini düzenle */
    global $post;
    if (!$post || is_admin()){
        return $links;
   }
    $terms = get_the_terms($post->ID, "post_tag");
    $termscount = count($terms);
    if ($termscount < 10){
        return $links;
   }

    if (is_wp_error($terms)){
        return $terms;
   }
    if (empty($terms)){
        return false;
   }

    $terms_slugs = [];
    $links = [];

    $post_count = 0;
    foreach ($terms_slugs as $slug){
        $term = get_term_by("slug", $slug, "post_tag");
        $post_count += $term->count;
   }
    foreach ($terms as $term){
        $terms_slugs[] = $term->slug;
        $link = get_term_link($term, "post_tag");
        if ($term->count > 10):
            $links[] =
                '<a title="' .
                $term->name .
                '" href="' .
                esc_url($link) .
                '" rel="tag">' .
                $term->name .
                "</a>";
        endif;
   }
    return $links;
});

term_links-post_tag temada the_tags() kullanan alanları düzenler. term_links-* *(post_tag) yerine custom tagler kullanılabilir örneğin woocommerce kullanıyorsanız term_links-product_tag şeklinde kullanılabilir, o tür kullanımda kod içerisindeki post_tag alanları da değişmeli.

Kolay gelsin.