Tema de publicación de WordPress y campo personalizado
Tengo un sitio en WordPress donde he utilizado campos personalizados, pero ahora quiero usar ese campo personalizado como etiqueta de publicación automáticamente.
¿Alguien tiene alguna idea?
Gracias.

Para convertir los campos personalizados antiguos, puedes escribir un plugin que, al activarse, obtenga todas las entradas con el nombre de tu campo personalizado y los convierta en etiquetas utilizando la útil función wp_set_post_terms
.
Primero, configura algunas constantes con los nombres de tus campos y el tipo de entrada.
<?php
/**
* ¡CAMBIA ESTO! ¿Cuál es el nombre de tu campo personalizado?
*/
define( 'WPSE29498_FIELD', 'nombre_del_campo_personalizado' );
/**
* ¡CAMBIA ESTO! ¿Qué tipo de entrada?
*/
define( 'WPSE29498_TYPE', 'post' );
Luego, la función del gancho de activación:
<?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 );
}
}
}
Finalmente, puedes engancharte a save_post
y verificar si el valor del campo personalizado está presente. Si es así, asegúrate de que no sea un término ya existente, luego insértalo si no lo está.
No estoy seguro si esto es algo que necesitas o una conversión única.
<?php
add_action( 'save_post', 'wpse29498_save_post' );
function wpse29498_save_post( $post_id )
{
if( $meta = get_post_meta( $post_id, WPSE29498_FIELD, true ) )
{
// obtén la etiqueta actual de la entrada
$terms = wp_get_object_terms( $p->ID, 'post_tag', 'name' );
// si nuestro término ya está ahí, sal
if( in_array( $meta, $terms ) ) return;
// agrega el término si no está
wp_set_post_terms( $post_id, $meta, 'post_tag', true );
}
}

Por lo que sé, esto no es posible hacerlo automáticamente "de forma nativa". Una búsqueda rápida en Google muestra que actualmente no hay plugins que realicen esta tarea por ti.
Sin embargo, no veo ninguna razón por la que no se pueda escribir un plugin para hacer esto. Necesitarás usar el hook "save_post", que se ejecutará cada vez que se guarde/actualice una publicación, comprobar el campo personalizado y aplicarlo como una etiqueta.
La documentación sobre este hook en particular es escasa, pero se menciona aquí:

Hace un tiempo me encontré con una pregunta similar de alguien que preguntaba cómo añadir automáticamente palabras clave del plugin All-in-one SEO como etiquetas de las publicaciones (http://www.vidalquevedo.com/how-to-add-tags/#li-comment-62)
Después de ver tu pregunta, tomé ese script que escribí y lo modifiqué para que también añada automáticamente los valores de campos personalizados como etiquetas de las publicaciones.
Aquí está el enlace al script y la publicación: http://www.vidalquevedo.com/wordpress-how-to-automatically-convert-custom-fields-to-post-tags/
Gracias, y por favor avísame si te ayuda!
Vq.

Creo que tu solución es agregar las palabras clave de 'All in one SEO' como etiquetas, como leí en vidalquevedo.com/how-to-add-tags#comment-123. No estoy usando All in one SEO, simplemente insertando un campo personalizado en la publicación y quiero que esas sean las etiquetas para esa publicación.
