WordPress: el código abreviado no funciona al obtener contenido de publicación usando la función get_post_field ()

2 minutos de lectura

avatar de usuario
usuario3396122

Quiero obtener el contenido de la publicación por id fuera del ciclo, por lo que estoy usando el siguiente código:

    echo get_post_field('post_content', $postid);

Funciona bien, sin embargo, si la publicación contiene códigos cortos, los códigos cortos no funcionan correctamente. Solo repite el shortcode como texto sin formato.

Ejemplo: estoy usando el siguiente código en el editor para mostrar la imagen y el texto del título debajo de la imagen:

    <img class="size-medium wp-image-23 " alt="" src="http://localhost/wordpress/wp-content/uploads/2014/03/Desert-300x225.jpg" width="300" height="225" /> this is caption

Pero cuando obtengo el contenido de esta publicación usando la función get_post_field()en lugar de mostrar el texto del título, muestra:

    this is caption 

¿Alguna solución?

NB: estoy usando ajax para obtener los contenidos

avatar de usuario
Rahil Wazir

Esto funcionará:

echo do_shortcode(get_post_field('post_content', $postid));

Editar

Si desea generar a la fuerza un código abreviado dentro de Ajax, consulte ejecutando shortcode dentro de la solicitud AJAX

  • Esto funciona, pero estoy tratando de obtener el contenido mediante la solicitud ajax. en ese caso no funciona 🙁

    – usuario3396122

    8 de marzo de 2014 a las 16:19

  • @ user3396122 No puede generar código abreviado usando ajax. Porque al hacer ajax solicita el admin-ajax.php no sabe sobre shortcodes.php expediente. No tiene acceso a todo el entorno wp cuando lo solicita con ajax.

    – Rahil Wazir

    8 de marzo de 2014 a las 16:34


  • Para futuros lectores: si desea generar a la fuerza un código abreviado dentro de Ajax, por favor ver

    – Rahil Wazir

    27 de mayo de 2016 a las 8:09

avatar de usuario
andreivictor

Debe filtrar su contenido antes de mostrarlo, así que intente con el siguiente código:

echo apply_filters( 'the_content', get_post_field('post_content', $postid) );

Actualizar:
No puede generar códigos cortos usando llamadas ajax conectadas a wp_ajax.
WP Ajax ejecuta tanto llamadas públicas como cerradas a través de admin.php. Esto significa que no tiene acceso a todo el entorno de wp, como do_shortcode()que está dentro /wp-includes/shortcodes.php.

  • Esto funciona, pero estoy tratando de obtener el contenido mediante la solicitud ajax. en ese caso no funciona 🙁

    – usuario3396122

    8 de marzo de 2014 a las 16:20

  • Esto funciona bien porque do_shortcode mal convierte nuevas líneas.

    – fdrv

    24 de junio de 2015 a las 5:32

¿Ha sido útil esta solución?