게시물 내용과 갤러리 단축 코드를 분할하는 방법이 있습니까? 방법이나 위치에 상관없이 일반 컨텐츠 외부에 갤러리를 표시하고 싶습니다. 이것을 사용하여 단축 코드 자체를 얻을 수 있습니다.
if(has_shortcode(get_the_content(), 'gallery')){
$pattern = get_shortcode_regex();
preg_match("/$pattern/s", get_the_content(), $matches);
echo do_shortcode($matches[0]);
}
그러나 갤러리 짧은 코드가 첫 번째 인스턴스가 아닌 경우 작동하지 않습니다. 내 콘텐츠를 분할하고 갤러리를 완전히 분할하는 방법이 있습니까?
편집 : 나는 반 솔루션을 가지고 있지만 그것에 대해 갈 길이 멀다. 먼저 게시물의 첫 번째 단축 코드를 가져옵니다 ( "갤러리"단축 코드 만 원하므로 수정해야 함). 그런 다음 내용에서 모든 단축 코드를 제거합니다 (실제로하고 싶은 것은 아닙니다).
<?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; ?>
편집 # 2- 좋아, 게시물에 갤러리 단축 코드 만 가져올 수있었습니다. 또한 갤러리 단축 코드 형식을 제거하기위한 필터를 추가했습니다 the_content()
. 문제는 단축 코드를 게시 한 이후 반드시 제거 할 필요는 없지만 "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);
루프
<?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>
The Loop에서 내 짧은 코드를 두 번 반환 합니다 (단일 페이지에 두 번 반복되어야하므로 do_shortcode ()가 실행되지 않습니다). 이유가 확실하지 않습니다.
the_content()
있습니다. 그러나 이와 같은 페이지가 이미 많으면 까다 롭습니다.