Czy istnieje sposób na podzielenie treści postu i krótkiego kodu galerii. Chcę wyświetlać galerię poza moją normalną treścią bez względu na to, jak i gdzie jest ona umieszczona. Mogę użyć tego, aby uzyskać sam shortcode:
if(has_shortcode(get_the_content(), 'gallery')){
$pattern = get_shortcode_regex();
preg_match("/$pattern/s", get_the_content(), $matches);
echo do_shortcode($matches[0]);
}
Ale to nie działa, jeśli krótki kod galerii nie jest pierwszą instancją. Czy istnieje sposób na całkowite podzielenie treści i galerii?
Edycja: Mam pół-rozwiązanie, ale wydaje się, że jest to długa, kręta droga do rozwiązania tego. Najpierw pobiera pierwszy krótki kod w poście (który musi zostać naprawiony, ponieważ chcę tylko krótki kod „Galeria”), a następnie usuwa wszystkie krótkie kody z treści (ponownie, nie tak naprawdę, co chcę zrobić.
<?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; ?>
Edycja nr 2 - Ok, w poście udało mi się uzyskać tylko skróty galerii. Dodałem również filtr, aby usunąć formularz shortcode galerii the_content()
- problem polega na tym, że niekoniecznie usuwa on shortcode, ponieważ go publikuje, ale nie pozwala mi na uruchomienie „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);
Pętla
<?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>
w Loop zwróci mój krótki kod Dwa razy (jestem na jednej stronie, powinien być zapętlony dwa razy - więc nie działa do_shortcode ()). Nie pewny dlaczego.
the_content()
. Jednak trudniejsze, jeśli istnieje już wiele takich stron.