Merhabalar, öncelikle emeğinize sağlık.
Ancak bir WordPress sitesinde neden harici mySQL bağlantısı, PDO kodlar olduğunu anlayamadım.
get_terms() ve wp_update_term() komutları ihtiyacınız olan tek komutlar.
get_terms()'e gerekli argümanları verdikten sonra içinde foreach çevirmeniz ve her foreach'deki term_id değeri için de
wp_update_term() çevirmeniz yeterli.
Üstteki Kodu WordPress'e uygun şekilde yazarsam:
add_action( 'init', 'update_my_term_desc'); // bu kodun her WordPress çağırıldığında çalışmasını sağlar. Bu sebeple işleminizi gerçekleştirince bu hook'u kaldırınız.
function update_my_term_desc(){
$myTerms = get_terms(
'taxonomy' => 'post_tag'
);
foreach($myTers as $myTerm){
$termID = (int) $myTerm->term_id;
$termName = sanitize_text_field($myTerm->name);
// burası opsiyonel, size kalmış. Her description'ı tag adına özel yapmak isterseniz şöyle bir girişim yapılabilir:
// String içine ' (tek kesme işareti) ile bir değer koymak isterseniz (Ali'nin evi gibi) lütfen \' sistemi ile atınız. Aksi halde hata alırsınız. (Örn: Ali\'nin Evi) doğrusudur.
$mySpecialDesc = 'Bu açıklama '.$termName.' etiketine aittir. Burada harika bir açıklama var!';
wp_update_term($termID , 'post_tag',
array(
'description' => $mySpecialDesc // buraya description gelecek
));
}
}kodunun daha doğru olduğunu söyleyebilirim. R10 editöründen yazdığım için kodda belki typo olabilir. Parantezleri kontrol etmenizde fayda var kullanmadan önce.
Kodu temanızın functions.php'sine yerleştirdikten ve description metasını doldurduktan sonra kayıt ederek temanızın herhangi bir sayfasında refresh atın. İşlem tamamlanmış olacaktır. Ardından add_action() komutunun başına // ekleyerek her sayfa yüklemesinde çalışmasını durdurun. Gerektiği bir zaman tekrar // öğesini kaldırıp tekrarlayabilirsiniz.