Có cách nào để phân chia nội dung bài đăng và bộ sưu tập mã ngắn. Tôi muốn hiển thị thư viện bên ngoài nội dung thông thường của mình cho dù nó được đặt ở đâu và như thế nào. Tôi có thể sử dụng điều này để có được shortcode chính nó:
if(has_shortcode(get_the_content(), 'gallery')){
$pattern = get_shortcode_regex();
preg_match("/$pattern/s", get_the_content(), $matches);
echo do_shortcode($matches[0]);
}
Nhưng điều này không hoạt động nếu mã ngắn của thư viện không phải là phiên bản đầu tiên. Có cách nào để phân chia hoàn toàn nội dung và bộ sưu tập của tôi không?
Chỉnh sửa: Tôi có một giải pháp bán nhưng có vẻ như là một cách dài để đi về nó. Đầu tiên, nó lấy mã ngắn đầu tiên trong bài đăng (cần phải sửa vì tôi chỉ muốn mã ngắn "Thư viện") sau đó xóa tất cả các mã ngắn khỏi nội dung (một lần nữa, không thực sự là điều tôi muốn làm.
<?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; ?>
Chỉnh sửa # 2 - Ok, tôi chỉ có thể nhận được các đoạn mã thư viện trong bài viết. Tôi cũng đã thêm một bộ lọc để xóa biểu mẫu shortcode của thư viện the_content()
- vấn đề là nó không nhất thiết phải xóa shortcode vì nó đã đăng nó, nhưng nó không cho phép tôi chạy "do_shortcode ()"
Hàm.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);
Vòng lặp
<?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>
trong Vòng lặp, nó sẽ trả về mã ngắn của tôi Twice (tôi đang ở trên một trang, nên được lặp hai lần - để nó không chạy do_shortcode ()). Không chắc chắn lý do tại sao.
the_content()
. Trickier nếu đã có nhiều trang như thế này, tuy nhiên.