✅ Noticias, temas, complementos de WEB y WordPress. Aquí compartimos consejos y las mejores soluciones para sitios web.

Filtrado adecuado del contenido de las publicaciones (y comprensión de apply_filters)

18

De vez en cuando, cada vez que estoy trabajando con un código fuente preexistente o realizando una auditoría de código, veo a otros modificando el contenido de la publicación de un objeto de publicación como este :

<?php

$post->post_content = $my_content;

En este punto, algunos aparecerán e inmediatamente dirán que lo estás haciendo mal. Odio esa frase (e incluso está llena de basura en el código base de WordPress, pero estoy divagando).

Hay formas de usar otras funciones de la API de WordPress existentes para desinfectar los datos antes de configurarlos como el valor del atributo post_content, usar esas funciones no es la mejor manera de hacerlo.

En cambio, todos deberíamos usar apply_filters. ¿El problema? Algunos no saben, otros no saben cómo funciona y otros no saben cómo usarlo. Es decir, no está claro cómo filtrar correctamente el contenido de las publicaciones.

Contenido sin procesar filtrado por WordPress y luego escrito en la base de datos.

Pero para aquellos que pueden caer en cualquiera de las categorías anteriores, quizás esto pueda ayudar.

Filtrado adecuado del contenido de la publicación

En este punto, asumo que conoce WP_Post, sus propiedades y cómo modificarlas a través de varias funciones API.

El problema principal al que me refiero es asegurarme de que el contenido que se escribirá en la base de datos tenga el mismo formato que lo haría WordPress si escribiera o actualizara una publicación.

Y la forma en que sucede es así (y pronto llegaremos a los detalles):

<?php

/**
 * Assume $contents is an array of information we want to convert into content for a post.
 */

$new_content = '';
foreach ($contents as $line) {

    if (false === strpos( $line, $name)) {
        $new_content .= $line;
    }
}

$post->post_content = apply_filters( 'the_content', $new_content );

Pero las preguntas sobre qué hace esta función, cómo funciona y cuándo usarla permanecen.

¿Qué es apply_filters?

Claro, puedes leer todo sobre esto en los Recursos para desarrolladores, y da esta definición :

Llame a las funciones agregadas a un enlace de filtro.

Pero eso no siempre ayuda. Quiero decir que podemos leer la documentación y seguir confundidos, ¿verdad?

Piensa en ello de esta manera:

  1. Un filtro es una función que acepta entradas para procesar.
  2. La entrada se procesa en función de la definición de la función.
  3. A continuación, la función devuelve el valor procesado.

Lo que haga con el valor devuelto depende de usted, pero cuando aplica un filtro o llama a apply_filters a una parte de la información, le está diciendo a WordPress: "Tengo esta información, aplique el filtro identificado por esta clave y entregue el resultado de vuelta a mí ".

No está mal, ¿verdad?

¿Como funciona?

Pero hay una parte de lo anterior que lleva a una pregunta. Específicamente, menciono que «…por favor aplique el filtro identificado por esta clave…" y la idea de una clave puede ser confusa, especialmente porque un filtro o una acción o, en términos más generales, un gancho puede identificarse por lo que se llama una etiqueta o un llave.

son sinonimos Entonces, cuando vea una etiqueta o una clave en el contexto de un gancho, trátelos como tales.

Dicho esto, así es como funciona:

  1. La función apply_filters acepta dos argumentos. La primera es la etiqueta o la clave (según como quieras llamarla) asociada al filtro (léase: función) que quieres usar para procesar el trabajo, la segunda es el valor que quieres procesar dentro de dicha función.
  2. El filtro se activará y devolverá un resultado (o, recuerde, la función que hemos definido).
  3. Luego tomamos el valor devuelto y lo aplicamos a cualquier propiedad que queramos.

Entonces, por ejemplo, es probable que veas algo como esto en el código base de otra persona (o quizás incluso en el tuyo):

<?php

$post->post_content = apply_filters( 'the_content', $my_content );

Y ahora que tienes un poco de contexto sobre cómo funciona, entiendes la idea, ¿verdad?

¿Cómo lo usamos?

Esto lleva el círculo completo de la publicación a la pregunta inicial de cómo podemos usar apply_filters para post_content siempre que necesitemos insertar o actualizar una publicación.

Entonces, digamos que tiene el contenido que desea aplicar (o agregar) al valor del contenido de una publicación. Podrías hacer algo como esto :

<?php

/**
 * Assume $contents is an array of information we want to convert into content for a post.
 */

$new_content = '';
foreach ($contents as $line) {

    if (false === strpos( $line, $name)) {
        $new_content .= $line;
    }
}

$post->post_content = $new_content;

Pero eso es de mala forma. En su lugar, haces esto :

<?php

/**
 * Assume $contents is an array of information we want to convert into content for a post.
 */

$new_content = '';
foreach ($contents as $line) {

    if (false === strpos( $line, $name)) {
        $new_content .= $line;
    }
}

$post->post_content = apply_filters( 'the_content', $new_content );

Y así es como WordPress lo hace.

Conclusión

Entonces, dada toda la información y el código anterior, debe estar bien preparado no solo para asegurarse de que está filtrando correctamente los datos que se insertarán en la base de datos, sino que tiene el conocimiento necesario para definir sus filtros y aplicarlos a cualquier dato que creas conveniente.

Pero los ejemplos de eso son contenido para otra publicación.

Mientras tanto, si está trabajando con contenido de publicación, asegúrese de filtrar correctamente los datos antes de colocarlos en la base de datos.

Fuente de grabación: tommcfarlin.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More