Saya membutuhkan cara untuk memfilter konten halaman / posting sebelum dimuat sehingga saya dapat menambahkan skrip ke header jika ada kode pendek tertentu. Setelah banyak mencari saya menemukan ini di http://wpengineer.com
function has_my_shortcode($posts) {
if ( empty($posts) )
return $posts;
$found = false;
foreach ($posts as $post) {
if ( stripos($post->post_content, '[my_shortcode') )
$found = true;
break;
}
if ($found){
$urljs = get_bloginfo( 'template_directory' ).IMP_JS;
wp_register_script('my_script', $urljs.'myscript.js' );
wp_print_scripts('my_script');
}
return $posts;
}
add_action('the_posts', 'has_my_shortcode');
yang benar-benar brilian dan melakukan apa yang saya butuhkan.
Sekarang saya perlu memperpanjang sedikit lebih jauh dan melakukan hal yang sama untuk sidebar. Itu bisa dengan jenis widget tertentu, kode pendek, cuplikan kode atau apa pun yang akan berfungsi untuk mengidentifikasi kapan skrip perlu dimuat.
Masalahnya adalah saya tidak tahu cara mengakses konten sidebars sebelum sidebar dimuat (tema yang dimaksud akan memiliki beberapa sidebars)
widgets
javascript
sidebar
conditional-content
Ashley G
sumber
sumber
Jawaban:
Anda dapat menggunakan fungsi is_active_widget . Misalnya:
Untuk memuat skrip di halaman yang hanya memuat widget, Anda harus menambahkan kode is_active_widget (), di dalam kelas widget Anda. Misalnya, lihat widget komentar terbaru default (wp-include / default-widgets.php, baris 602):
sumber
Hanya ingin berbagi solusi yang saya kerjakan yang memungkinkan saya menjadi sedikit lebih fleksibel dengan implementasi saya. Daripada memiliki fungsi memeriksa berbagai kode pendek, saya memodifikasinya untuk mencari kode pendek tunggal yang mereferensikan fungsi skrip / gaya yang perlu enqueued. Ini akan bekerja untuk kedua metode di kelas lain (seperti plugin yang mungkin tidak melakukan ini sendiri) dan fungsi dalam lingkup. Cukup letakkan kode di bawah ini di functions.php dan tambahkan sintaks berikut ke halaman / posting mana pun yang Anda inginkan CSS & JS tertentu.
Sintaks Halaman / Posting: [loadCSSandJS function = "(class-> method / function name" "]
kode functions.php:
Ini juga akan memungkinkan Anda untuk menambahkan sebanyak yang Anda inginkan pada halaman. Perlu diingat bahwa Anda memang membutuhkan metode / fungsi untuk memuat.
sumber
Terima kasih telah berbagi kiat ini! Itu memberi saya sedikit sakit kepala, karena pada awalnya itu tidak berhasil. Saya pikir ada beberapa kesalahan (mungkin kesalahan ketik) pada kode di atas
has_my_shortcode
dan saya menulis ulang fungsinya seperti di bawah ini:Saya pikir ada dua masalah utama: yang
break
tidak dalam lingkup pernyataan if, dan itu menyebabkan loop selalu pecah pada iterasi pertama. Masalah lainnya lebih halus dan sulit ditemukan. Kode di atas tidak berfungsi jika kode pendek adalah hal pertama yang ditulis dalam sebuah tulisan. Saya harus menggunakan===
operator untuk menyelesaikan ini.Bagaimanapun, terima kasih banyak untuk berbagi teknik ini, itu sangat membantu.
sumber
dengan Wordpress 4.7 ada cara lain untuk mencapai ini di
functions.php
file Anda ,pertama-tama Anda mendaftarkan skrip Anda , yang sebenarnya tidak bisa dicetak pada halaman Anda kecuali jika Anda membuatnya jika kode pendek Anda dipanggil,
yang
do_shortcode_tag
telah diperkenalkan pada WP 4.7 dan dapat ditemukan di pengembang dokumentasi baru halaman.sumber