WordPress post tag & custom field
Pentru a converti câmpurile personalizate vechi, poți scrie un plugin care, la activare, preia toate articolele cu numele câmpului tău personalizat și le convertește în etichete folosind funcția utilă wp_set_post_terms
.
Mai întâi, definește câteva constante cu numele câmpurilor și tipul de postare.
<?php
/**
* SCHIMBĂ ACESTA! care este numele câmpului tău personalizat?
*/
define( 'WPSE29498_FIELD', 'nume_camp_personalizat' );
/**
* SCHIMBĂ ACESTA! ce tip de postare?
*/
define( 'WPSE29498_TYPE', 'post' );
Apoi, funcția pentru hook-ul de activare:
<?php
register_activation_hook( __FILE__, 'wpse29498_field_to_tag' );
function wpse29498_field_to_tag()
{
$posts = get_posts(
array(
'post_type' => WPSE29498_TYPE,
'post_status' => array( 'publish', 'draft', 'pending', 'future' ),
'numberposts' => -1,
'meta_key' => WPSE29498_FIELD
)
);
if( empty( $posts ) ) return;
foreach( $posts as $p )
{
if( $meta = get_post_meta( $p->ID, WPSE29498_FIELD, true ) )
{
wp_set_post_terms( $p->ID, $meta, 'post_tag', true );
}
}
}
Și în final, poți folosi hook-ul save_post
pentru a verifica dacă valoarea câmpului personalizat este prezentă. Dacă da, asigură-te că nu este deja o etichetă, apoi adaug-o dacă nu este.
Nu sunt sigur dacă este ceva de care ai nevoie sau o conversie unică.
<?php
add_action( 'save_post', 'wpse29498_save_post' );
function wpse29498_save_post( $post_id )
{
if( $meta = get_post_meta( $post_id, WPSE29498_FIELD, true ) )
{
// obține etichetele curente ale postării
$terms = wp_get_object_terms( $p->ID, 'post_tag', 'name' );
// dacă eticheta noastră este deja acolo, ieși
if( in_array( $meta, $terms ) ) return;
// adaugă eticheta dacă nu există
wp_set_post_terms( $post_id, $meta, 'post_tag', true );
}
}

Din câte știu, acest lucru nu este posibil să fie făcut automat „din cutie”. O scurtă căutare pe Google și se pare că în prezent nu există plugin-uri care să facă acest lucru pentru tine.
Totuși, nu văd niciun motiv pentru care nu ar putea fi scris un plugin care să facă acest lucru. Va trebui să folosești hook-ul „save_post”, care va rula de fiecare dată când un articol este salvat/actualizat, să verifici câmpul personalizat și să îl aplici ca etichetă.
Documentația pentru acest hook specific este limitată, dar este menționat aici:

Am întâlnit o întrebare similară acum ceva timp de la cineva care întreba cum să adauge automat cuvinte cheie din plugin-ul All-in-one SEO ca etichete ale articolului (http://www.vidalquevedo.com/how-to-add-tags/#li-comment-62)
După ce am văzut întrebarea ta, am luat acel script pe care l-am scris și l-am modificat pentru a adăuga automat și valorile câmpurilor personalizate ca etichete ale articolului.
Iată linkul către script și articol: http://www.vidalquevedo.com/wordpress-how-to-automatically-convert-custom-fields-to-post-tags/
Mulțumesc și te rog să-mi spui dacă te-a ajutat!
Vq.

Cred că soluția ta este să adaugi cuvintele cheie 'All in one seo' ca etichete, cum am citit pe vidalquevedo.com/how-to-add-tags#comment-123 Eu nu folosesc All in one SEO, ci doar inserez câmpuri personalizate în postări și vreau ca acestea să fie etichetele pentru acea postare.
