Cómo crear un link para editar Post en WordPress

 

Cómo crear un link para editar Post en WordPress

Después de tantos años trabajando con WordPress una de las cosas que más sucede en las actualizaciones es que los temas comienzan a fallar si no se adaptan a la nueva forma de la estructrura de WordPress que ha pasado a imponerse como un CMS con Framework propio enfocado al Headerless y a ocupar más del 50% del mercado de sitios webs, es decir más de la mitad de las páginas webs activa en este momento en el mundo están creadas con WordPress.

En fin y para no ahorar en tecnicismos, el problemilla que vamos a resolver hoy es super sencillo pero vean que ahorra tiempo y el tiempo obviamente es dinero así que vamos al tema pero no antes de definir un poco el escenario.

Objetivo a realizar:
Cómo crear un link para editar Post en WordPress de manera tal que al estar logueados podamos visualizar el link de edición en cada Post, vamos a delimitarlo para los Post para hacerlo más sencillo.

Entonces , sucede que las modificaciones que realizamos en WordPress podemos resolverlas de muchas formas como por ejemplo:

      • Crear un shortcode y colocarlo en Functions.php, luego llamarlo con do_shortcode desde el código del Tema activo, esto funciona siempre y cuando no cambiemos de tema.
      • Podemos instalar un plugin y caso resuelto, pero .. ¿Y las actualizaciones? ¿Acaso el plugin continuará por muchos años? etc.. etc..
      • Siguiendo las lluvia de idea, vemos que una forma sencilla y rápida puede ser llamar la función predeterminada para generar dicho link de edición… ah pero sucede que la última actualización de WordPress hizo desaparecer el link de edición donde lo tenía llamándolo con esa función, al menos en uno de los temas que uso actualmente para un sitio activo.

En todo caso la solución que me plantee fue crearme un link de edición construyendolo con la menor cantidad de funciones del Core de WP y la menor cantidad de llamadas anidadas para evitar solapamientos que desactiven algo entre capa y capa.

Por lo que la solución planteada fue la siguiente:

Verificar que el usuario esté conectado y si tiene permisos para poder editar
Mostrar un enlace para editar, y sería algo así.

< ? php
$role = get_role( ‘editor’ );
if ( is_user_logged_in() ) {

if( $role!=»»)  // verificar si el usuario es editor.. y hacemos esta verificación aquí porque primero debe chequearse que este logueado
{
echo «nombredetudominio.ext/wp-admin/post.php?post=».$postID.»&action=edit»;
}
} else {
// No mostrar nada
}
? >

 

Dentro del Loop , puede ser debajo del titular o al final del texto despues de the_content(); y listo..

Donde $postID obviamente es la variable que despliega el número identificador único del la entrada o post.

¿Porqué hacerlo así si existe una función para generar eso? bueno ya lo dije arriba, a veces falla, además hacerlo así directo al código usando una variable que la define el propio Loop asegura que esto va a funcionar siempre porque de no funciona simplemente el texto de la entrada no se presentaría y eso sería un error crítico en el sitio.

Por último diria que para evitar que sea borrado por actualizaciones del tema principal podemos crearnos un tema hijo, copiar el single.php o donde se ejecute el código del Loop para una entrada y poner el codigo que hemos descrito aquí en el tema hijo.

Este tipo de soluciones minimiza las llamadas a la BD porque la única variable que se usa ya está cargada en el Loop y la función que verifica que el usuario está logueado también está cargada con el hilo principal de WP.

Y algo importante es que tener este link de edición permite acceder directamente a los contenidos luego de iniciar sesión, lo que facilita mucho editarlos cuando tienes decenas de miles como en mi caso que tengo sitios web mas de 80k post publicados.

Ing. Roberto Alemán