Publicación a través del extremo frontal Presentación avanzada

Hoy continuaremos con nuestra miniserie sobre la inserción de publicaciones a través del extremo frontal, pero en esta parte analizaremos exclusivamente cómo administrar los metacampos personalizados que podríamos tener dentro de nuestro tipo de publicación. Entonces, preparémonos y comencemos!


Introducción

Ahora estamos en la parte 3 de nuestra miniserie, y si no ha leído las otras dos partes, le aconsejo que lo haga porque continuaremos desde donde lo dejamos. Nuestro objetivo después de completar esta miniserie debería permitirle al usuario enviar publicaciones a través de la interfaz, junto con la edición y el envío de la publicación a la papelera; Todo sin estar en el Panel de WordPress. Estos métodos se pueden usar tanto en un tema como en un complemento y pueden ser muy adaptables para lograr envíos muy avanzados y complejos.

La demostración y los archivos de descarga son un tema reducido que se ha creado solo para los fines de este tutorial..

Así que abre tu editor de texto favorito y comencemos!


Paso 1 Insertando Meta Box Personalizado

Comencemos por crear primero una carpeta llamada incluir, En esta carpeta crearemos un archivo llamado. post-meta.php. Crearemos nuestro meta box personalizado dentro de este archivo. Pasaré por esto con bastante rapidez, pero si quieres leer sobre todas las maravillas que puedes lograr con las meta box personalizadas, Tammy Hart escribió una increíble serie de tutoriales llamada Meta Boxes personalizadas reutilizables..

Dentro de nuestro post-meta.php, crearemos un prefijo para asegurarnos de que tenemos un identificador único para todos nuestros campos, también comenzaremos creando una matriz para mantener toda nuestra información para crear un meta box personalizado. El siguiente código es para crear una ID para el meta box personalizado, establecer un título, donde aparecerá el meta box (qué tipo de publicación) y los campos que tendrá:

 // Field Array $ prefix = 'vsip_'; $ vsip_post_meta_box = array ('id' => 'vsip-post-meta-box', 'title' => __ ('Custom Meta', 'framework'), 'page' => 'post', 'context' = > 'normal', 'prioridad' => 'alto', 'campos' => array ('(' nombre '=> __ (' Entrada personalizada uno: ',' marco '),' desc '=> __ (' Ingrese su meta personalizada 1 ',' marco '),' id '=> $ prefix.'custom_one', 'type' => 'text'), array ('name' => __ ('Custom Input Two:', 'framework'), 'desc' => __ ('Ingrese su meta 2 personalizado', 'framework'), 'id' => $ prefix.'custom_two ',' type '=>' text '),));

A continuación, crearemos nuestra meta box y lo haremos creando una función. Dentro de esta función usaremos la función de WordPress: add_meta_box.

El siguiente código muestra cómo creamos nuestro meta box, junto con el uso del gancho de acción add_meta_boxes:

 // Meta caja personalizada add_action ('add_meta_boxes', 'vsip_project_add_meta'); función vsip_project_add_meta () global $ vsip_post_meta_box; add_meta_box ($ vsip_post_meta_box ['id'], $ vsip_post_meta_box ['title'], 'vsip_display_post_meta', $ vsip_post_meta_pipepp_peta_pip_peta_peta_peta_peta_peta_peta_peta_meta_peta_peta_meta_peta_peta_meta_peta_peta_peta_peta_veta_peta_veta_peta_peta_peta_peta_peta_veta_peta_peta_permín  // END OF Function: vsip_project_add_meta

Ahora que hemos creado nuestro cuadro de meta, junto con tener todos los campos configurados con la información que queremos almacenar, necesitamos mostrar nuestro cuadro de meta. Hacemos esto creando otra función con el mismo nombre que nuestro tercer parámetro en nuestro add_meta_box función. En nuestro caso, creamos una función llamada: vsip_display_post_meta.

El siguiente código incluye cada campo dentro de nuestra matriz que contiene toda nuestra información y verifica el tipo de campo y genera el tipo de campo correcto:

 función vsip_display_post_meta () global $ vsip_post_meta_box, $ post; // Usar nonce para verificación echo ''; eco ''; foreach ($ vsip_post_meta_box ['fields'] as $ field) // obtener metadatos de la publicación actual $ meta = get_post_meta ($ post-> ID, $ field ['id'], verdadero); switch ($ field ['type']) // If Text case 'text': echo '','','
'; eco ''; descanso; eco '
'; // FIN DE FUNCION: vsip_display_post_meta

Hemos creado nuestro meta box personalizado y mostrado su contenido, todo lo que nos queda por hacer es guardar los datos una vez que el usuario ha insertado el contenido de los campos. Hacemos esto creando una función final que guardará nuestros datos correctamente. El código es el siguiente:

 // Guardar metadatos add_action ('save_post', 'vsip_post_save_data'); function vsip_post_save_data ($ post_id) global $ vsip_post_meta_box; // verifique nonce if (! isset ($ _ POST ['vsip_meta_box_nonce']) ||! wp_verify_nonce ($ _ POST ['vsip_meta_box_nonce'], basename (__ FILE__))) return $ post_id;  // compruebe autoguardar si (definido ('DOING_AUTOSAVE') && DOING_AUTOSAVE) return $ post_id;  // compruebe los permisos if ('page' == $ _POST ['post_type']) if (! current_user_can ('edit_page', $ post_id)) return $ post_id;  elseif (! current_user_can ('edit_post', $ post_id)) return $ post_id;  foreach ($ vsip_post_meta_box ['fields'] as $ field) $ old = get_post_meta ($ post_id, $ field ['id'], verdadero); $ new = $ _POST [$ field ['id']]; if ($ new && $ new! = $ old) update_post_meta ($ post_id, $ field ['id'], $ new);  elseif ("== $ new && $ old) delete_post_meta ($ post_id, $ field ['id'], $ old); // END Of Function: vsip_post_save_data

Bien, sé que lo hicimos muy rápido, pero el enfoque de este tutorial es cómo administrar los metadatos personalizados a través del extremo frontal. Ahora que todo está fuera del camino y tenemos nuestro cuadro meta personalizado configurado en nuestras publicaciones, continuaremos en cómo insertar los campos en nuestra publicación de inserción y editar los campos meta personalizados..


Paso 2 Editando nuestros postes de inserción

Editaremos nuestra página de inserción de publicaciones para compensar nuestros campos personalizados recién agregados. Vamos a abrir nuestro template-insert-posts.php e inserta algunos campos extra. Como nuestros campos de meta personalizados son campos de texto, insertaremos dos campos de entrada de texto adicionales en nuestro formulario, de la siguiente manera:

 

Necesitamos tenerlo para que cuando el usuario haga clic en "Enviar" insertará la metainformación personalizada en los campos correspondientes. Para hacer esto, necesitamos usar la función de WordPress: update_post_meta, lo que hace esta función es permitirnos actualizar el meta de publicación, y solo podemos actualizar el meta de publicación una vez que hayamos creado una publicación y tengamos una ID.

Entonces, vamos a ir donde estamos usando la función: wp_insert_post y justo encima de nuestro enlace de redirección es donde insertaremos nuestro meta personalizado.

El siguiente código hace nuestra prueba para verificar si hemos creado una publicación, y luego usamos el update_post_meta funciona y pasa el ID del mensaje a esta función, junto con el ID del campo que queremos actualizar y, finalmente, el valor de nuestro formulario que publicaremos en el cuadro de meta:

 if ($ post_id) // Actualizar Meta personalizada update_post_meta ($ post_id, 'vsip_custom_one', esc_attr (strip_tags ($ _ POST ['customMetaOne')))); update_post_meta ($ post_id, 'vsip_custom_two', esc_attr (strip_tags ($ _ POST ['customMetaTwo']))); // Redirigir wp_redirect (home_url ()); salida; 

¡Eso es! Hemos creado un meta box personalizado y hemos actualizado nuestro formulario de inserción de publicaciones para asegurarnos de que nos dirigimos a estos campos y de que se guarden correctamente. A continuación, veremos cómo editar nuestra meta personalizada..


Paso 3 Editando nuestro Meta personalizado

Ahora necesitamos poder editar el meta personalizado a través del extremo frontal, por lo que comenzaremos abriendo nuestra template-edit-posts.php e insertando nuestros dos nuevos campos de entrada que agregamos a nuestro formulario de inserción:

 

A continuación, necesitamos recuperar nuestro meta personalizado de la publicación específica, lo hacemos mediante la función de WordPress: get_post_meta Dentro de nuestro WordPress Loop. Desplácese hasta donde tenemos nuestro WordPress Loop e inserte el siguiente código justo debajo de donde obtuvimos la información de nuestro título y contenido.

 $ custom_one = get_post_meta ($ current_post, 'vsip_custom_one', true); $ custom_two = get_post_meta ($ current_post, 'vsip_custom_two', true);

Ahora que tenemos la información del meta personalizado del mensaje, ahora emitiremos los valores de esto en nuestros campos de entrada de nuestro formulario. El siguiente código es la versión actualizada de los dos metacampos personalizados que insertamos:

 

Como puede ver en el código que acabamos de insertar, los valores de nuestras entradas son las variables de nuestro meta personalizado que creamos en nuestro bucle de WordPress, es posible que haya notado que podría generar nuestros campos, pero cuando hacemos cambios, no hay cambios reales. Se hacen actualizaciones. Esto se debe a que no hemos insertado el código para actualizar la publicación una vez que el usuario ha hecho clic en actualizar.

De la misma forma en que agregamos nuestro meta de publicación al insertar nuevas publicaciones, lo haremos dentro de nuestra plantilla de edición, así que agregue el siguiente código:

 if ($ post_id) // Actualizar Meta personalizada update_post_meta ($ post_id, 'vsip_custom_one', esc_attr (strip_tags ($ _ POST ['customMetaOne')))); update_post_meta ($ post_id, 'vsip_custom_two', esc_attr (strip_tags ($ _ POST ['customMetaTwo']))); // Redirigir wp_redirect (home_url ()); salida; 

¡Eso es! ¡Lo hicimos! Ahora podemos crear una meta caja personalizada, insertar meta con la publicación de inserción a través del extremo frontal y editar el meta a través de la interfaz.


Conclusión

Eso es parte 3 completa, lo has hecho! Bien hecho, ahora eres capaz de insertar publicaciones, editar y eliminar publicaciones a través de la interfaz, junto con el manejo de cualquier meta personalizada que tengas..

Ese es el final de esta serie sobre Publicaciones a través del Front End, y me alegro de que se haya quedado conmigo durante nuestro viaje..

Me gustaría dar las gracias por pasar el tiempo leyendo mi serie de tutoriales, espero que haya sido de ayuda. Por favor, siéntase libre de dejar comentarios y haré todo lo posible para ayudarles y responderlos. Siempre puede contactarme directamente a través de mi sitio web: www.VinnySingh.co o Twitter @VinnySinghUK.