C'è un modo per dividere il contenuto del post e il codice funzione della galleria. Voglio visualizzare la galleria al di fuori del mio normale contenuto, indipendentemente da come o dove sia collocata. Posso usarlo per ottenere lo shortcode stesso:
if(has_shortcode(get_the_content(), 'gallery')){
$pattern = get_shortcode_regex();
preg_match("/$pattern/s", get_the_content(), $matches);
echo do_shortcode($matches[0]);
}
Ma questo non funziona se il codice funzione della galleria non è la prima istanza. C'è un modo per dividere completamente i miei contenuti e la mia galleria?
Modifica: ho una semi-soluzione ma sembra un modo lungo e tortuoso per farlo. Prende innanzitutto il primo shortcode nel post (che deve essere risolto poiché voglio solo il shortcode "Gallery"), quindi rimuove tutti i codici brevi dal contenuto (di nuovo, non proprio quello che voglio fare.
<?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; ?>
Modifica n. 2 - Ok, sono stato in grado di ottenere solo i codici brevi della galleria nel post. Ho anche aggiunto un filtro per rimuovere il modulo shortcode della galleria the_content()
- il problema è che non rimuove necessariamente il shortcode dal momento che lo pubblica, ma non mi permette di eseguire "do_shortcode ()"
functions.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);
Il cappio
<?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>
in The Loop restituirà il mio codice breve due volte (sono su una singola pagina, dovrebbe essere ripetuto due volte - quindi non esegue do_shortcode ()). Non so perché.
the_content()
. Più complicato se ci sono già molte pagine come questa, comunque.