Apakah ada cara untuk membagi konten posting dan kode pendek galeri. Saya ingin menampilkan galeri di luar konten normal saya, tidak peduli bagaimana atau di mana ditempatkan. Saya bisa menggunakan ini untuk mendapatkan kode pendek itu sendiri:
if(has_shortcode(get_the_content(), 'gallery')){
$pattern = get_shortcode_regex();
preg_match("/$pattern/s", get_the_content(), $matches);
echo do_shortcode($matches[0]);
}
Tapi ini tidak berfungsi jika kode pendek galeri bukan yang pertama. Apakah ada cara untuk membagi konten dan galeri saya sepenuhnya?
Sunting: Saya memiliki semi-solusi tetapi sepertinya cara yang panjang untuk menyelesaikannya. Pertama-tama mengambil kode pendek pertama di pos (yang perlu diperbaiki karena saya hanya ingin kode pendek "Galeri") kemudian menghapus semua kode pendek dari konten (sekali lagi, tidak benar-benar apa yang ingin saya lakukan.
<?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; ?>
Sunting # 2 - Ok, saya hanya bisa mendapatkan kode singkat galeri di pos. Saya juga menambahkan filter untuk menghapus formulir shortcode galeri the_content()
- masalahnya adalah tidak perlu menghapus shortcode sejak posting, tetapi tidak memungkinkan saya untuk menjalankan "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);
Putaran
<?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>
di Loop itu akan mengembalikan kode pendek saya Dua kali (saya berada di satu halaman, harus dilingkarkan dua kali - sehingga tidak menjalankan do_shortcode ()). Tidak yakin kenapa.
the_content()
. Lebih rumit jika sudah ada banyak halaman seperti ini.