Crear entradas desde un formulario externo en WordPress (sin plugins)

Si necesitamos de colaboradores que aporten contenidos a nuestro blog, pero no queremos que tengan acceso al Dashboard (o panel de control) de WordPress, podemos facilitarles un formulario externo para que redacten el contenido y se envié pendiente de revisión.

Para ello vamos a crear un página interna donde insertaremos un formulario en HTML y el código PHP necesario para que el contenido se envíe y se cree la entrada en el blog.

¿Te atreves? comenzamos…

Paso 1. Crear una página interna “Formulario de colaboradores”

Como si de cualquier otra página se tratase, nos dirigimos al menú Páginas y añadimos una nueva llamada por ejemplo, Formulario de colaboradores:

Paso 2. Crear un nuevo archivo page-colaboradores.php

Lo primero, nos situaremos sobre el directorio de nuestro tema principal y crearemos un nuevo archivo al que llamaremos por ejemplo “page-colaboradores.php”.

Este archivo lo vamos a utilizar como plantilla (o template) para nuestro formulario, así que lo primero que vamos a incluir en el archivo es el siguiente código:

Ahora volvemos a la página que creamos anteriormente, recargamos y en la sección Plantilla, seleccionamos el nuevo template que acabamos de crear “Formulario colaboradores”:

Paso 3. Copiar el contenido de page.php a page-colaboradores.php

Para no trabajar sobre una página en blanco, vamos a ir al archivo page.php de nuestro tema principal, copiamos todo el código y lo pegamos en nuestro page-colaboradores.php después del código insertado en el Paso 2.

Así trabajaremos sobre la estructura de nuestro tema principal (con su cabecera, menús, pié de página…) y nuestro formulario se integrará perfectamente con el diseño general.

Paso 4. Eliminar el Loop de WordPress

Este paso es opcional, pero podemos prescindir de código que no vamos a usar. El Loop de WordPress se encarga de obtener el contenido de la base de datos correspondiente a la página o entrada en la que nos encontremos. Como en este ejercicio no vamos a cargar ningún contenido de la base de datos, si no que insertaremos el formulario manualmente, podemos eliminar todo el código del Loop de WordPress.

Normalmente el Loop de WordPress comenzará con:

y termina con:

Paso 5. Crear el formulario en HTML (y algo de PHP)

Añadimos el código HTML para el formulario compuesto por un campo de texto para insertar el título de la entrada y el editor de WordPress para añadir el contenido, sin olvidar el botón submit para enviar el formulario.

La función wp_nonce_field() añade seguridad al formulario, evitando que la información llegue desde un formulario ajeno al sitio web.

Nuestro formulario quedará de esta forma:

Paso 6. Procesar los datos del formulario y crear la entrada

Por último, enviamos una entrada de prueba y esta quedará registrada como Pendiente de revisión:

Debemos tener en cuenta que cualquier persona que acceda a la URL del formulario, podrá enviarnos entradas. Ya depende de nosotros cómo gestionamos la página del formulario, si la restringimos únicamente a usuarios registrados, o con determinado rol, o impedimos el acceso por contraseña, etc.

Pero el sistema de roles y restricciones de páginas los veremos en otros posts.

Espero que os haya resultado de utilidad y hasta el próximo post! 😉

¿Crees que te he sido útil y te apetece invitarme a un café?

En Gestionatuweb ofrecemos artículos, cursos y videotutoriales gratis y de forma desinteresada. Intentamos no llenar nuestros artículos y páginas con publicidad abusiva, para que la experiencia de navegación sea agradable.

Tu donativo nos ayuda a mantener el hosting y a dedicar parte del tiempo libre que disponemos a aportar contenido útil a nuestros usuarios.

 

 

3 Comentarios

  1. Una pregunta, estoy usando wordpress 4.9.5. al incluir el codigo tal com usted lo muestra me sale un error y no se que es.

    Notice: Undefined index: tituloPost in C:\wamp64\www\vidas_con_proposito-WPF\wp-content\themes\vidas_con_proposito-B4\page-colaboradores.php on line 39

    Notice: Undefined index: contenido in C:\wamp64\www\vidas_con_proposito-WPF\wp-content\themes\vidas_con_proposito-B4\page-colaboradores.php on line 40

    Notice: Undefined variable: user_id in C:\wamp64\www\vidas_con_proposito-WPF\wp-content\themes\vidas_con_proposito-B4\page-colaboradores.php on line 43

    Tengo incluido el codigo como usted lo expresa

    1. Daniel, Gestionatuweb.net

      Hola Hernán Torres, realmente no es un error, es un aviso que se dispara porque la misma página donde está el formulario es la que lo procesa, entonces cuando se carga una página que esperaba ciertas variables y se las encuentra vacías, da esa advertencia. Pero no es un error. Si no quieres que aparezcan estas advertencias puedes desactivarlas en el display_errors de tu archivo php.ini, o en la variable WP_DEBUG, cambiándola a false en tu wp-config.php. Un saludo.

Responder

XHTML: Puedes usar esas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Contacta con Gestionatuweb
 
×

Utilizamos cookies para mejorar la experiencia de uso y obtener datos estadísticos de nuestras visitas. Si no aceptas las condiciones algunos apartados de la web podrían no funcionar correctamente. Más información

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar