¿Hay alguna manera de dividir el contenido de la publicación y el código corto de la galería? Quiero mostrar la galería fuera de mi contenido normal, sin importar cómo o dónde se coloque. Puedo usar esto para obtener el shortcode en sí:
if(has_shortcode(get_the_content(), 'gallery')){
$pattern = get_shortcode_regex();
preg_match("/$pattern/s", get_the_content(), $matches);
echo do_shortcode($matches[0]);
}
Pero esto no funciona si el código corto de la galería no es la primera instancia. ¿Hay alguna manera de dividir mi contenido y galería completamente?
Editar: Tengo una solución parcial, pero parece una forma larga de hacerlo. Primero toma el primer shortcode en la publicación (que debe corregirse ya que solo quiero el shortcode "Galería") y luego elimina todos los shortcodes del contenido (de nuevo, no es realmente lo que quiero hacer.
<?php if(has_shortcode(get_the_content(), 'gallery')) : ?>
<?php
$pattern = get_shortcode_regex();
preg_match("/$pattern/s", get_the_content(), $matches);
?>
<div id="content">
<?php echo strip_shortcodes(get_the_content()); ?>
</div>
<div id="gallery">
<?php echo do_shortcode($matches[0]); ?>
</div>
<?php endif; ?>
Edición n. ° 2 : Ok, solo he podido obtener códigos abreviados de la galería en la publicación. También he agregado un filtro para eliminar el formulario de shortcode de la galería the_content()
: el problema es que no necesariamente elimina el shortcode ya que lo publica, pero no me permite ejecutar "do_shortcode ()"
Funciones.php
function remove_gallery($content) {
global $post;
if($post->post_type == 'artcpt')
remove_shortcode('gallery', $content);
return $content;
}
add_filter( 'the_content', 'remove_gallery', 6);
El lazo
<?php preg_match('/\[gallery ids=[^\]]+\]/', get_the_content(), $matches); ?>
<div id="content">
<?php the_content(); ?>
</div>
<div id="gallery">
<?php echo do_shortcode($matches[0]); ?>
</div>
en The Loop, devolverá mi código corto dos veces (estoy en una sola página, debería repetirse dos veces, por lo que no se ejecuta do_shortcode ()). No estoy seguro de por qué.
the_content()
. Más complicado si ya hay muchas páginas como esta, sin embargo.