Existen muchas razones para cambiar el autor de un post. Supongo que el caso más relevante lo representa cuando traemos artículos ajenos a nuestra web y no deseamos que aparezca nuestro nombre como autor del mismo. En fin, el siguiente código lo propuse en un foro como solución a un problema expuesto por un usuario. Vamos a construirlo paso a paso (Para los queridos vagos y flojos: al final de este artículo pueden encontrar el código terminado. Cópienlo en frío y que les aproveche).
1.- Dirígete directo al directorio de tu plantilla y abre functions.php (si no existe créalo). Comienza por inventarte una función; en esta ocasión llamémosla mi_autor:
1 2 3 4 | <?php function mi_autor() { } ?> |
2.- Trabajarás con campos personalizados (explicado más adelante), así que utilizarás la función nativa get_post_meta, la cual actúa de forma relativa a la entrada afectada. Siempre que eches mano a funciones de este tipo debes llamar a la variable universal $post para que ésta pueda operar. Recuerda eso siempre. Si no lo haces devolverá false y generará un resultado vacío (en cristiano: no aparecerá nada). Entonces tu código lucirá así:
1 2 3 4 5 | <?php function mi_autor() { global $post; } ?> |
3.- Nombremos “autor” como clave campo personalizado que usarás. Ten en cuenta que “autor” (como campo) representa una clave única en la base de datos y no puede existir otro campo llamado “autor”, ya que WordPress localizará la clave “autor” de ese artículo y devolverá el valor. Aclarado este punto vámonos a la naciente función y asignamos get_post_meta a la variable, de esta manera:
1 2 3 4 5 6 | <?php function mi_autor() { global $post; $autor = get_post_meta($post->ID, 'autor', true); } ?> |
4.- Ahora definamos la variable que dará salida al resultado. Llamémosla $aut y asignémosle en principio un valor vacío:
1 2 3 4 5 6 7 | <?php function mi_autor() { global $post; $autor = get_post_meta($post->ID, 'autor', true); $aut =''; } ?> |
5.- Analicemos ahora las opciones que obtendrás una vez la función esté operativa:
Traducimos lo anterior a lenguaje PHP y tenemos:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php function mi_autor() { global $post; $autor = get_post_meta($post->ID, 'autor', true); $aut =''; if($autor != '' and $autor != 'no') { $aut .= 'Por '.$autor; } elseif($autor == 'no') { $aut .= ''; } else { $aut .= 'Por '.get_the_author(); } echo $aut; } ?> |
Como pudiste notar utilizamos la variable $aut para construir nuestro conjunto de condicionales y cerrarla con broche de oro para que no existan opciones extrañas que puedan arruinar la función. Al final le damos salida con un echo, quedando lista para la acción.
Nota también cómo utilizamos get_the_author, la cual es la versión de the_author para ser utilizada en el paso de parámetros. Esto significa que si usas the_author conocerás el infierno de manera súbita y temprana, ya que el resultado será muy distinto al que esperabas.
Nada más simple. Una vez guardes la función en functions.php sólo dirígete al panel de edición de tus artículos y rellenas el campo personalizados de esta forma:

Publicado en Wordpress. 6 Comentarios »
Sin animo de ser polémico pero a ti te agrada ese autor que pusiste en el ejemplo, ¿no?
Interesante articulo y muy bien explicado. Me va a servir para una funcionalidad donde los usuarios participen y se pueda dar credito a quien colaboro.
Hola!
Este codigfo ya lo he utilizado en una de mis webs, pero ahora que voy a abrir una nueva, intento usarlo pero me salta este error cunado intento entrar al panel de admin:
1 | Warning: Cannot modify header information - headers already sent by (output started at /home/s1006cdd/public_html/wp-content/themes/i3theme-1-8-classic-fluid/functions.php:115) in /home/s1006cdd/public_html/wp-includes/pluggable.php on line 868 |
Haber que se puede hacer, un saludo.
@Willy en ¿Joomla Vs. Wordpress? (1ª parte): Era lo que necesitaba leer!!! como programador, aprender como editar un template de cero en joomla y...
@Willy en [Meme] Concepto bizarrón de CSS: Cagadas Siempre Suceden!! XD Counter Strike Server. no es bizarro pero bue!!
@Horacio en ¿Joomla Vs. Wordpress? (1ª parte): Hola, hace tiempo empece a trabajar con joomla y armar mi sitio web en un servidor gratuito para...
@birgitta en ¿”WatchTower” o “CashPower”?: Hilaridad sin H,mis disculpas
@birgitta en ¿”WatchTower” o “CashPower”?: AY AY AY.Cuanto lobotomizado hay por aqui!!!!!! Muchas gracias Dario por tu...
@Darío en ¿Joomla Vs. Wordpress? (1ª parte): Gracias por la sugerencia tocayo, voy a analizarla! Luego de buscar un poco más encontré que la página...
@Juan Vera en Dar acceso a grupos de Joomla (o restringírselo) para cualquier componente: Hola, mira yo quiero algo parecido pero para las personas...
@Emanuel en Dos tips sobre Adobe Reader: Detener AcroRd32Info.exe e impedir actualizaciones automáticas: Para que molestarse instalando acrobat si...
Darío Ferrer — Blog personal
Sitio desarrollado con Wordpress, software libre para un mundo libre.
61 consultas a la BD en 0,964 segundos. Blog alojado en DreamHost