Setup_postdata (): las etiquetas de plantilla que necesita, matrices wp_post personalizadas que desea

Setup_postData () le permite tratar cualquier paquete de publicación, ya que normalmente trataría los resultados de una WP_Query. SETUP_POSTDATA () es una función que me encanta en WordPress, ya que le permite trabajar con cualquier paquete de publicación y un bucle foreach (), ya que normalmente trabajaría con los resultados de un WP_QUEY y un bucle personalizado. Este artículo deshacerá lo que significa esta declaración y por qué es genial y proporcionará algunos ejemplos de uso. Realmente me gusta la función de WordPress setup_postData, por lo que si aún no está familiarizado, les animo a que conozca
Definición de “publicaciones de publicaciones”: matriz de objetos wp_post en WordPress, a menudo hablamos de “publicar paquetes”. En la analogía de la fábrica que usamos para describir WordPress en general, un paquete de publicación es la “materia prima” que se toma del “almacén” (base de datos), para procesar por “fábrica” ​​(tema y complementos) en uno mismo. Pero, ¿qué es una “publicación de publicaciones”? En el lenguaje técnico, un paquete de publicaciones es en realidad una serie de objetos WP_Post. Matrics en PHP y otros lenguajes de programación, una matriz es una “lista”: una colección de artículos estructurados similares, como una lista de compras o una lista de equipos deportivos.
Cuando decimos “Publicación de paquete” en un contexto de WordPress, realmente nos referimos a “publicaciones”: una lista de objetos WP_Post, estructurados en una matriz PHP. Parece esto (la salida de php no es válida, solo para dar la idea): [0 => objeto wp_post 1 1 => objeto wp_post 2 2 => objeto wp_post 3] objetos wp_post que es la matriz? Esto nos lleva a otra estructura de datos importante: objetos. En la programación orientada al objeto, cada objeto es miembro de una clase: una colección abstracta de características compartidas que todos los objetos miembros tienen en común. Como ejemplo en el mundo real, el objeto del “sofá” sería un miembro del “sofá” de la clase: los sofás son cosas que tienen al menos tres pies de ancho y son buenos para sentarse, y mi sofá es un ejemplo. En WordPress, la clase en la que nos interesa se llama wp_post, y sus objetos tienen las siguientes características: wp_post object ([id] => [post_author] => [post_date] => [post_date_gmt] => [post_content] = >> [post_title] => => [post_status] => [comment_status] => [ping_status] => [post_password] => => [post_parent] => [guía] => [menú_order] => [post_type] => de Objetos WP_Post tomados de la base de datos y cada objeto contiene las propiedades enumeradas anteriormente para esa publicación.
Por qué es útil trabajar directamente con la matriz posterior al objeto cuando hace un tema normal de WordPress en un archivo de plantilla regular, como index.php, generalmente no tiene que saber todas las cosas que acabamos de cubrir. Simplemente abra el bucle y el interior, puede usar etiquetas de plantilla como The_itle () y funcionará correctamente. La forma en que se toman y almacenan los datos de publicación es invisible, detrás de escena. Lo mismo es cierto para WP_Query personalizado: tome sus publicaciones a través de ese sistema y nunca trabaje con los objetos WP_Post que ha tomado directamente. A veces tiene que buscar un paquete de publicaciones y luego hacer otras cosas para ese paquete. Que no puede hacer dentro de WP_Query sí mismo. Entonces lo directo con el paquete se vuelve importante. Un ejemplo: la alfabetización según el contenido de la publicación para extender un ejemplo que dimos en un artículo anterior sobre trabajar con objetos de publicación. Nuestro objetivo es mostrar todas las publicaciones de una de nuestras categorías de publicaciones, “editorial”, pero alfabetizado según el contenido de la publicación. (Entonces, una publicación que comienza con “A Boy …” aparecerá temprano, y una que comience con “Zebras …” aparecerá tarde).
Obtener nuestras publicaciones de la categoría “editorial” es la parte fácil. Para hacer esto, en el otro artículo, escribí un wp_quey personalizado y luego mantuve solo objetos wp_post en la propiedad de publicaciones del objeto wp_quey (eliminando el resto de la información en wp_query). Esta vez para la eficiencia, usaremos una función más simple, get_posts (), que es como WP_Query, pero solo recibe primero los objetos WP_POST. Así es como parece: // Publicaciones de obtención $ args = array (‘tax_query’ => array (array (‘taxonomy’ => ‘categoría’, ‘campo’ => slug ‘,’ termin ‘=> editorial’,) ,), ‘POSTS_PER_PAGE’ => -1,); $ Posts = get_posts ($ args); Lo siguiente que queremos hacer es un poco de magia explicada en el otro artículo: // Defina la función de clasificación WPShout_sort_By_Content ($ A, $ B) {return sTCRMP (WP_STRIP_ALL_TAGS ($ A-> Post_Content), WP_STRIP_ALL_TAGS ($ B ->> Publicar Contenido)); } // Ordenar publicaciones usort ($ post, ‘wpshout_sort_by_content’); ¡Y viola!
Y la violación
Ahora tenemos varios objetos WP_Post, ordenados por el contenido de la publicación. No podríamos haber llegado aquí solo con wp_quey o get_posts (): tuvimos que hacer algo de inteligencia con la clasificación. Aquí se detuvo el tutorial anterior. Donde setup_postdata (): ¿Cómo podemos mostrar de manera fácil y atractiva el rango de publicaciones que creamos? Por qué configurar_postData () es genial: cómo usar etiquetas de plantilla dentro de un () Por ejemplo: Suponga que queremos construir nuestra plantilla de página de archivo para mostrar los datos que acabamos de tomar. Cómo hacemos esto? Podemos usar las etiquetas de plantilla de WordPress, como the_itle () y the_content (), como podríamos hacer en el bucle predeterminado o un bucle alrededor de un wp_query personalizado? No tenemos esto en absoluto: tenemos varios objetos WP_Post. Por lo tanto, se excluye el uso del bucle (que se vería como algo ($ publicaciones-> have_post ()), etc.). Foreach () ing a través de objetos de objetos, en su lugar, necesitaremos usar un bucle Php foreach (). Esta es la forma en que se encuentra en una matriz PHP, incluida la matriz ordenada de publicaciones que acabamos de crear por el método en la sección anterior. Eso parece como:
Foreach ($ publicaciones como $ current_post): // haz algo a cada publicación, que se llamará $ current_post dentro del bucle endforeach; ¿Pero podemos usar etiquetas de plantilla? No, generalmente solo están en el bucle. Si ponemos, por ejemplo, the_itle () en nuestro bucle, simplemente devolverá vacío o, de lo contrario, devolverá el mismo título incorrecto en la iteración de foreach (). Si dejamos este estado de cosas como es, estamos bloqueados para hacer referencias directas incómodas a las propiedades de los objetos WP_Post, como: foreach ($ publicaciones como $ current_post): echo $ current_post-> post_title; echo wpautop ($ current_post-> post_content); EndForeach; Esto tiene desventajas:

Las funciones de WordPress, como WPAUTOP (), que se ejecutan automáticamente en etiquetas de plantilla como the_content () solo se ejecutarán si las llamamos manualmente. Esto también incluye funciones de escape que son importantes para la seguridad.
Las funciones personalizadas (del tema y los complementos) conectadas a filtros como the_itle no se ejecutarán.
Es más escribir y más difícil de leer.

setup_postData () para rescate con todas estas patiencias en el camino, ahora puedo mostrarle lo que es excelente en setup_postata (). Mira el siguiente código:
Global $ post; // Llame a Global $ post variable foreach ($ publicaciones como $ current_post): $ post = $ current_post; // establecer $ post global variable en la configuración del objeto post actual_postata ($ post); // Configurar “entorno” para etiquetas de plantilla // use etiquetas de plantilla normales the_itle (); The_post_thumbnail (‘grande’); El extracto (); // o the_content (), the_permalink (), etc. EndForeach; wp_reset_postata (); ¿Guay, verdad? Con solo unas pocas filas de vudú, puede usar etiquetas de plantilla como the_itle () (o, de hecho, the_author () o get_the_permalink ())), y puede hacerlo en una serie de publicaciones, en lugar de en un wp_quey y Dentro de un bucle foreach () en lugar del bucle que generalmente se esperan las plantillas de WordPress. Nuevamente, la utilidad específica de esto es cuando tiene que tomar publicaciones y luego realizar un procesamiento posterior que WP_Query y get_posts () no están equipados para administrar, como en nuestro ejemplo de “alfabetización”. ¿Qué es Global $ Post? ¡Buena pregunta! WordPress almacena una serie de cosas como “variables globales”: cosas que son verdaderas sobre todo el entorno, mientras que el procesamiento de PHP de WordPress se ejecuta, pero que no son necesariamente visibles dentro de un archivo en particular. Global $ posterior a la línea;
En PHP significa: “Quiero referirme a la variable PHP global que se llamaba (en otro lugar, antes) como $ post”. ¿Qué contiene esta variable? La explicación más rápida es que almacena el conocimiento “al que WordPress está pensando en este momento”. En otras palabras (y sin entrar en detalles), WordPress responde a etiquetas de plantilla como the_itle () dependiendo de la publicación a la que “piensa” hoy, y esa información se guarda en la publicación global $. Dentro del bucle, cambiamos la publicación de que WordPress está pensando en usar The_Post () o $ Query-> the_post () para una consulta personalizada. En este entorno, invocar $ post, ahorrar $ current_post en $ post y luego ejecutar setup_postata ($ post); logra el mismo propósito. Lo ejecutamos una vez cada vez que el bucle foreach () avanza al siguiente objeto wp_post, y por lo tanto dentro del foreach (), the_title () y otras etiquetas de plantilla siempre indican el objeto wp_post en el que actualmente estamos trabajando. Después de eso, ejecutamos WP_RESET_POSTATA (), como lo haríamos después de una WP_Query personalizada, por la misma razón: queremos “indicar” $ Post a donde sea que se indique antes de involucrarnos, para que no nos estropeemos. la línea. Una nota sobre las variables globales de $ post. ¿Lo encuentras extraño? Debido a que crea, prácticamente, fantasmas que flotan (de hecho, “global $ post” suena muy parecido a “fantasma”, intenta decirlo rápidamente), generalmente se consideran una mala práctica. Pero así es como funciona WordPress. El ejemplo completo de código y salida es el código frontal en la parte posterior: // en publicaciones “editoriales” $ args = array (‘tax_query’ => array (‘taxonomy’ => categoría ‘
, ‘Field’ => ‘Slug’, ‘Termin’ => ‘Editorial’,),), ‘Post_per_page’ => -1,); $ Posts = get_posts ($ args); // Defina la función de clasificación de la función wpshout_sort_by_content ($ a, $ b) {return strICMP (wp_strip_all_tags ($ a-> post_content), wp_strip_all_tags ($ b-> post_content)); } // Ordenar publicaciones usort ($ post, ‘wpshout_sort_by_content’); // llamar a global $ post variable global $ post; // Reunir publicaciones ordenadas y mostrar usando etiquetas de plantilla foreach ($ publicaciones como $ current_post): $ post = $ current_post; // establecer $ post global variable en la configuración del objeto post actual_postata ($ post); // Configurar “entorno” para etiquetas de plantilla // use etiquetas de plantilla normales the_itle (); The_post_thumbnail (‘streened-image-syin’); El extracto (); EndForeach; wp_reset_postata (); Salir Puede usar este código en un tema o complemento, donde desee mostrar este contenido. Una cosa sensible (que omití para mantener la demostración del código simple) sería registrar un código corto y mostrar el código de esta manera. Para mis propósitos, pongo este código (¡solo por un momento!) En la plantilla de Page.php de nuestro tema y cargamos nuestra página “Acerca de”. Esto es lo que se muestra en el front-end:

Copyright statement: Unless otherwise noted, this article is Collected from the Internet, please keep the source of the article when reprinting.

Check Also

gkOVSBm5B8SgiXmo

Shopify vs WooCommerce – ¿Cuál es la mejor plataforma?(Comparación)

Shopify vs WooCommerce

Leave a Reply

Your email address will not be published. Required fields are marked *