Comprendiendo El Uso De Cajas Meta Personalizadas En WordPress

widgets para wordpressEn un anterior articulo, habíamos hablado sobre los campo personalizado de WordPress, donde te mostramos como añadir un campo personalizado para incluir información que se mostraría en el articulo. Sin embargo, si no te sientes cómodo usando el botón del campo personalizado, te mostraremos como puedes crear cajas meta personalizadas, las cuales siempre tendrás en el editor de WordPress.

Una caja meta, es una caja personalizada que creamos por nuestra cuenta, esta contiene una interfaz sencilla que se puede encontrar en la creación de un post o página. Puede usar el cuadro de meta en lugar del cuadro de campo personalizado, esto tendrá el mismo objetivo ;) A continuación te mostramos como puedes crear este útil cuadro de información adicional en WordPress.

Creación De Una Caja Meta

WordPress brinda una función en su API, llamada add_meta_box, la cual nos permite crear un cuadro de meta. A continuación puedes ver como crear un formulario básico:

[php]function add_post_reference() {<br /> add_meta_box(‘post-reference’, ‘Reference’, ‘referenceCallBack’, ‘post’);<br />}<br />add_action(‘add_meta_boxes’, ‘add_post_reference’);<br /><br />function referenceCallBack() {<br /> echo ‘Hello World'<br />} [/php]

La función add_meta_box toma cuatro parámetros: la identificación, el título del cuadro de meta, una función que retorna un valor, en este ejemplo es el epico «Hello Word», y el tipo de entrada que queremos mostrar. En este caso se le asigna un nuevo cuadro de meta en una página del editor de post (esto también funciona con las páginas).

El anterior código mostrará lo siguiente en el panel de administración en WordPress:

cuadros meta personalizados en wordpress

El anterior cuadro meta aparecería por debajo del editor WYSIWYG. Si lo deseas agregar en la barra lateral se puede añadir el valor ‘side’ después del parámetro de entrada, y junto con «high» si quieres ponerlo en la parte superior de la barra lateral.

[php]function add_post_reference() {<br /> add_meta_box(‘post-reference’, ‘Reference’, ‘referenceCallBack’, ‘post’, ‘side’, ‘high’);<br />}<br />add_action(‘add_meta_boxes’, ‘add_post_reference’); [/php]

Ahora puedes ver que la posición ha cambiado:

posicion cuadro meta wordpress

El «Hello Word» no es algo practico para lo que deseas aprender, para esto lo reemplazaremos y añadiremos elementos como un campo de entrada para una nueva entrada.

En este ejemplo, vamos a añadir dos campos de entrada que consisten en un nombre y otro de referencia:

[php]<br /><br />function referenceCallBack($post) {<br /> wp_nonce_field( ‘reference_meta_box’, ‘reference_nonce’ );<br /><br /> $name_value = get_post_meta( $post-&gt;ID, ‘_post_reference_name’, true );<br /> $link_value = get_post_meta( $post-&gt;ID, ‘_post_reference_link’, true );<br /><br /> echo ‘&lt;label for="reference-name"&gt;’. ‘Reference Name’ .’&lt;/label&gt;’;<br /> echo ‘&lt;input id="reference-name" type="text" name="post_reference_name" placeholder="Example" size="25" value="’.$name_value.’" /&gt;’;<br /> echo ‘<br /><br />’. ‘Add the name of the reference’ .'<br /><br />’;<br /><br /> echo ‘&lt;label for="reference-link"&gt;’. ‘Reference Link’ .’&lt;/label&gt;’;<br /> echo ‘&lt;input id="reference-link" type="text" name="post_reference_link" placeholder="http://www.example.com/" size="25" value="’.$link_value.’" /&gt;’;<br /> echo ‘<br /><br />’. ‘Add the link of the reference’ .'<br /><br />’;<br />}<br /><br />[/php]

Actualiza la página del editor, y veremos lo siguiente:

campos de entrada en campo meta personalizado

Las variables $name_value y $link_value podrán obtener los registros de la base de datos y mostrarlos en los campos de entrada. Para obtener las entradas de la base de datos, tendremos que crear una función para eso.

Se debe añadir unas pocas líneas de código que llenaran las entradas a través de los campos de la base de datos de forma segura, para esto es necesario realizar unas cuantas validaciones.

[php]<br /><br />function save_post_reference( $post_id ) {<br /><br />}<br />add_action( ‘save_post’, ‘save_post_reference’ );<br /><br />[/php]

Como ya se ha mencionado, se deben verificar algunas cosas por motivos de seguridad:

(1) Tendremos que comprobar si el usuario tiene la posibilidad de editar un post.

[php]<br /><br />if ( ! current_user_can( ‘edit_post’, $post_id ) ) {<br /> return;<br />}<br /><br />[/php]

(2) También tenemos que comprobar si el Nonce se establece.

[php]if ( ! isset( $_POST[‘reference_nonce’] ) ) {<br /> return;<br /> }<br /> if ( ! wp_verify_nonce( $_POST[‘reference_nonce’], ‘reference_meta_box’ ) ) {<br /> return;<br /> }[/php]

(3) A continuación, tenemos que evitar que los datos sean auto-guardados. Estos deben ser almacenados una vez el botón el usuario haga click  en «Guardar» o «Actualizar».

[php]<br /><br />if ( defined( ‘DOING_AUTOSAVE’ ) &amp;&amp; DOING_AUTOSAVE ) {<br /> return;<br />}[/php]

(4) También tendremos que asegurarnos de que nuestros dos entradas, post_reference_name y post_reference_link, se establecen y estén listas antes de ser usadas.

[php]<br /><br />if ( ! isset( $_POST[‘post_reference_name’] ) || ! isset( $_POST[‘post_reference_link’] ) ) {<br /> return;<br />}[/php]

(5) Y la entrada debe estar libre de cualquier carácter inesperados que pueda comprometer la seguridad del sitio web. Para comprobar esto, puedes usar el WordPress función integrada de sanitize_text_field.

[php]<br /><br />$reference_name = sanitize_text_field( $_POST[‘post_reference_name’] );<br />$reference_link = sanitize_text_field( $_POST[‘post_reference_link’] );[/php]

Muy bien, ahora estamos listos para guardar las entradas en la base de datos:

[php]<br /><br />update_post_meta( $post_id, ‘_post_reference_name’, $reference_name );<br />update_post_meta( $post_id, ‘_post_reference_link’, $reference_link );[/php]

Ahora puedes probarlo, para esto ingresa alguno datos en los campos de entrada y haga clic en el botón «Actualizar» para almacenarlos.

ingresar datos en campos personalizados en wordpress

Finalmente

Como puedes ver, la parte mas extensa en la de comprobar los datos antes de ser almacenados. Puedes ampliar aún más el cuadro con otros tipos de componentes tales como un botón de radio o cuadro de selección. Este ejemplo puede ser básico, pero es una base solida para que comiences a analizar un uso adecuado para tus proyectos.