PREGUNTA Y RESPUESTA REVISADA
A veces hay estas preguntas que te molestan y te persiguen más tarde en la vida nuevamente, y esta es una de esas preguntas.
Esta pregunta me hizo pensar en una solución alternativa al problema. Como ya dije, los campos personalizados y los meta cuadros están allí para almacenar pequeñas piezas de metadatos, y no para actuar como una extensión para publicar contenido donde puede ejecutar shortcode y funciones. Además, como ya dije, su método es incorrecto y no debe usarse
Lo que encontré interesante en tu publicación es que usaste campos personalizados y meta cuadros para mostrar inadvertidamente contenido personalizado de la entrada del usuario. Así que me senté y pensé en una posible forma de hacer que esto funcione y usar los datos de campo personalizados y los datos de meta box correctamente
Esta es mi idea:
EL ESCENARIO:
NOTA: Esto se puede modificar para adaptarse a cualquier necesidad.
En una sola publicación, un usuario quiere / requiere mostrar contenido personalizado dinámicamente después de la publicación para satisfacer sus necesidades. Esto debería ser dinámico. El contenido debe ser una consulta personalizada, y el usuario debe elegir qué mostrar cuando quiera y qué quiera
LA POSIBLE SOLUCIÓN:
Los códigos cortos no funcionarán aquí, ya que los códigos cortos no se pueden ejecutar en campos personalizados. Tampoco do_shortcode
funcionará, ya que no es dinámico y está codificado, algo que no queremos. Como en su pregunta, vamos a hacer uso de campos personalizados. Una vez más, enfatizo, no use el campo personalizado para ejecutar una consulta personalizada o códigos cortos
EL PLAN:
Usaremos el campo personalizado para guardar solo nuestros argumentos de consulta, eso es todo. Entonces, lo que hacemos es crear un campo personalizado llamado custom_query_arguments
. En la pantalla del editor de publicaciones, ahora verá su campo personalizado, listo para usar
El siguiente paso será agregar nuestros argumentos de consulta personalizados a nuestro campo. Digamos que necesitamos mostrar 3 publicaciones de la categoría 1 ordenadas por título. Entonces nuestros argumentos de consulta deberían verse así: ( En formato de cadena )
'posts_per_page=3&cat=1&orderby=title'
Esto es lo que ahora debe ingresar en su campo personalizado. Una vez ingresado, guarde el valor de su campo personalizado
Lo siguiente será construir la consulta personalizada en su single.php. Lo que se necesita aquí, necesitamos obtener el valor de nuestro campo personalizado, que en realidad son nuestros argumentos de consulta, y alimentarlo a una nueva instancia WP_Query
para recuperar las publicaciones. También debemos verificar si realmente tenemos un valor guardado en ese campo personalizado, si el campo personalizado está vacío, no mostrar nada
EL CÓDIGO:
Puedes probar algo como esto en single.php justo después de la publicación individual.
$args = get_post_meta( get_queried_object_id(), 'custom_query_arguments', true );
// check if the custom field has a value
if( ! empty( $args ) ) {
$q = new WP_Query( $args );
if( $q->have_posts() ) {
while( $q->have_posts() ) {
$q->the_post();
the_title();
}
wp_reset_postdata();
}
}
Si el usuario desea eliminar la consulta personalizada, simplemente puede eliminar el valor del campo personalizado y dejar el campo personalizado en blanco. Si necesita mostrar la misma consulta pero de la categoría 10 y un total de 5 publicaciones, puede reemplazar el valor original con lo siguiente
'posts_per_page=5&cat=10&orderby=title'
POCAS NOTAS:
Es importante usar la sincronización y el formato correctos al ingresar información en estos campos y meta cuadros personalizados. Los errores de sintaxis o información incorrecta conducirán a resultados no deseados o incluso a errores fatales. Es importante que sus clientes conozcan dicha información.
RESPUESTA ORIGINAL
No entiendo lo que estás tratando de lograr, pero por lo que puedo decirte, esas son dos cosas separadas
OPCIÓN 1
apply_filters('the_content', $content);
se utiliza para aplicar los filtros de contenido al contenido de la publicación sin filtrar sin procesar, que generalmente proviene del uso de $post->post_content
. Estos filtros incluyen el famoso filtro wp_autop
que agrega etiquetas p athe_content()
apply_filters('the_content', $content);
se usa generalmente en conjunción con get_posts
donde uno trabaja directamente con los WP_Post
objetos sin usar, lo setup_postdata( $post )
que hace que las etiquetas de plantilla the_content()
estén disponibles para su uso
OPCION 2
do_shortcode
se usa para agregar un código corto en cualquier parte de los archivos de plantilla fuera del editor de texto en la parte posterior de la pantalla del editor de página, básicamente filtrando códigos cortos a través de sus ganchos.
El uso correcto es el siguiente
Ejemplo: agregar el shortcode de la galería en un archivo de plantilla
echo do_shortcode( '[gallery]' )
EDITAR 1
Por sus comentarios, no usaría un shortcode en absoluto.
Si no va a agregar un shortcode a través del editor de texto y lo va a agregar directamente (hardcode) a través do_shortcode
de un archivo de plantilla, prefiero simplemente agregar la función a la plantilla
Ejemplo:
Si tiene la siguiente función de shortcode
function footag_func( $atts ) {
return "foo = {$atts['foo']}";
}
add_shortcode( 'footag', 'footag_func' );
Simplemente puede llamar a la función directamente en una plantilla como
echo footag_func();
Es mucho más rápido de esta manera ya que no es necesario analizar el shortcode
EDITAR 2
Para ser honesto aquí, estás haciendo esto completamente mal desde tu edición. Por eso no pude entender tu pregunta inicial
A veces, necesito agregar meta meta en publicaciones / páginas / tipos de publicaciones personalizadas, para que puedan agregar códigos cortos (control deslizante, formulario de contacto, etc.) o simplemente un texto simple. Es un texto archivado.
Para que el shortcode funcione, uso la opción 1 .....
Los campos personalizados no son campos de texto y seguramente no están destinados a ser utilizados para ejecutar códigos cortos y, de hecho, controles deslizantes o formularios de contacto. Los campos personalizados nunca deben usarse para reemplazar el editor de texto en publicaciones y páginas.
Como dije antes, apply_filters('the_content', $content);
está destinado a aplicarse para aplicar formato al contenido de la publicación sin formato.
Tu tienes dos opciones aquí
Úselo do_shortcode
directamente en archivos de plantilla, lo cual no recomendaría ya que usar la función es más rápido ya que no es necesario analizar el shortcode
Use el shortcode directamente en el editor de texto para la página / publicación en particular
Le recomendaría seriamente que eche un nuevo vistazo a sus estructuras y lo que desea lograr. Los campos personalizados no son editores de texto y no pueden ejecutar códigos cortos o controles deslizantes.
Mi recomendación sería buscar quizás widgets personalizados o un sistema que pueda usar con campos personalizados