Cara menambahkan snipet javascript ke footer yang membutuhkan jQuery

27

Saya tahu saya bisa menambahkan file skrip ke footer wordpress yang memerlukan jquery menggunakan kode ini:

<?php
function my_scripts_method() {
   // register your script location, dependencies and version
   wp_register_script('custom_script',
       get_template_directory_uri() . '/js/custom_script.js',
       array('jquery'),
       '1.0',
       true);
   // enqueue the script
   wp_enqueue_script('custom_script');
}
add_action('wp_enqueue_scripts', 'my_scripts_method');
?>

Tetapi bagaimana jika saya ingin menambahkan potongan jquery inline yang normal, bukan file. Bagaimana ini bisa dilakukan.

Edit

Saya tahu saya bisa menggunakan skrip ini untuk menambahkan sesuatu ke catatan kaki:

<?php
function myscript() {
?>
<script type="text/javascript">
 // This depends on jquery
</script>
<?php
}
add_action('wp_footer', 'myscript');

Tapi bagaimana cara menentukan skrip yang digunakan memerlukan jquery untuk dijalankan.

Saif Bechan
sumber
Tidak ada fungsi bawaan untuk melakukan ini yang saya tahu, itu sebabnya wp_register_scriptdan wp_enqueue_scriptada, tetapi Anda dapat memeriksa menggunakan jquery itu sendiri.
Wyck
2
Maaf untuk downvote, tapi saya pikir Anda tidak mengerti pertanyaan saya. Saya telah membaca kodeks, dan tahu tentang opsi. Tapi saya tidak ingin wp_enqueue_scriptfile skrip ke footer, saya ingin menambahkan potongan ke footer yang memerlukan jquery. Saya menurunkan jawaban yang diambil langsung dari kodeks. Saya membaca naskah kuno, dan tidak menemukan jawaban, itu sebabnya saya mengajukan pertanyaan. Jika Anda mengarahkan saya ke codex lagi saya downvote.
Saif Bechan
Terima kasih wyck, saya pikir ini masalahnya, terima kasih telah memahami pertanyaan dengan benar. Saya pikir saya hanya akan menggunakan skrip JS eksternal daripada memastikan skrip dapat dijalankan.
Saif Bechan

Jawaban:

30

Cara termudah untuk melakukan ini sebenarnya adalah kombinasi dari wp_enqueue_scriptdan tindakan footer yang Saif dan v0idless sudah dirujuk. Saya sering menggunakan jQuery di theme dan plugins saya, tapi saya meletakkan semua skrip lain di footer juga.

Cara terbaik untuk benar-benar mengantri adalah:

function myscript() {
?>
<script type="text/javascript">
  if ( undefined !== window.jQuery ) {
    // script dependent on jQuery
  }
</script>
<?php
}
add_action( 'wp_footer', 'myscript' );

function myscript_jquery() {
    wp_enqueue_script( 'jquery' );
}
add_action( 'wp_head' , 'myscript_jquery' );

Namun, kode ini terpotong mengasumsikan bahwa Andalah yang membuat skrip, yaitu Anda melakukan ini di plugin atau tema Anda sendiri.

Saat ini, tidak ada cara untuk menambahkan skrip in-line ke footer WordPress dan juga memuatnya dengan dependensi. Tetapi ada alternatif, jika Anda mau.

Alternatifnya

Ketika WordPress bekerja dengan skrip, skrip memuatnya secara internal ke objek untuk melacaknya. Pada dasarnya ada 3 daftar di dalam objek:

  • terdaftar
  • antre
  • selesai
  • melakukan

Ketika Anda pertama kali mendaftarkan skrip dengan wp_register_scripts()itu ditempatkan di daftar terdaftar. Ketika Anda wp_enqueue_script()skrip, itu disalin ke daftar antrian. Setelah dicetak ke halaman, itu ditambahkan ke daftar selesai.

Jadi, daripada mengantri skrip footer Anda untuk meminta jQuery, Anda dapat mendokumentasikan bahwa ia perlu menggunakan jQuery dan cukup memeriksa secara terprogram untuk memastikan jQuery dimuat.

Ini digunakan wp_script_is()untuk memeriksa di mana skrip terdaftar.

function myscript() {
    if( wp_script_is( 'jquery', 'done' ) ) {
    ?>
    <script type="text/javascript">
      // script dependent on jQuery
    </script>
    <?php
    }
}
add_action( 'wp_footer', 'myscript' );

Anda mungkin dapat menggunakan kode yang sama ini untuk memaksa jQuery memuat di footer juga, tapi saya belum mengujinya ... jadi jarak tempuh saya berbeda-beda.

EAMann
sumber
apakah cuplikan kode yang Anda berikan diterima oleh standar pengembangan plugin WordPress? Jika ya, maka saya akan menggunakannya dalam plugin saya ... tolong beri saya balasan atas ini ...
laraib
Cuplikan terakhir? Tidak. Plugin WordPress harus selalu memberikan persyaratan skrip. Memaksa jQuery memuat di luar sistem antrian dengan cara ini hanyalah sesuatu yang harus Anda lakukan di situs Anda sendiri di mana Anda mengontrol 100% lingkungan. Tidak pernah pantas bagi plugin untuk melakukan itu.
EAMann
maka bisakah kamu memberi saya beberapa contoh untuk itu, tolong ... ????
laraib
Karena saya sedang mengembangkan plugin WordPress pertama saya dan saya ingin itu diterima oleh tim WordPress ... menunggu tanggapan Anda .... tolong sampaikan pendapat Anda tentang hal ini sehingga saya dapat membuat dan menerima plugin saya yang diterima ...
laraib
12

Sejak wordpress 4.5 Anda dapat menambahkan skrip inline dengan wp_add_inline_script(). Untuk menambahkan potongan javascript ke footer yang membutuhkan jQuery, kode ini membantu Anda

function enqueue_jquery_in_footer( &$scripts ) {

    if ( ! is_admin() )
        $scripts->add_data( 'jquery', 'group', 1 );
}
add_action( 'wp_default_scripts', 'enqueue_jquery_in_footer' );

function theme_prefix_enqueue_script() {
   if(!wp_script_is('jquery', 'done')) {
     wp_enqueue_script('jquery');
   }
   wp_add_inline_script( 'jquery-migrate', 'jQuery(document).ready(function(){});' );
}
add_action( 'wp_enqueue_scripts', 'theme_prefix_enqueue_script' );

wp_add_inline_script dengan wordpress jquery

Dhinju Divakaran
sumber
1

Gunakan wp_footertindakan seperti ini:

add_action( 'wp_footer', 'wpse33008');
function wpse33008() {
?>
<script type="text/javascript">
    /** INSERT SCRIPT HERE **/
</script>
<?php
}
tidak ada
sumber
1
Ini bukan jawaban yang bagus. Saya bertanya bagaimana saya bisa menentukan skrip yang diperlukan jQuery. Jika pengguna tidak menjalankan jquery, implementasi Anda tidak akan berjalan.
Saif Bechan
0

Saya tahu OP ingin menentukan persyaratan pada jQuery, dan penulis WordPress seharusnya mengizinkan snippet untuk berdekatan dengan file skrip, tetapi tidak, jadi saya sarankan untuk tidak memaksanya. Jika Anda tidak ingin mengacaukan antrian atau urutannya, seperti saya (karena saya menggunakan plugin lain yang menggabungkan dan mengoptimalkan skrip), maka jawabannya adalah menggunakan wp_footertindakan seperti:

<?php

add_action(
    'wp_footer'
    , function() {
        ?>
        <script>
            if (window.jQuery) {
                // your snippet
            }
        </script>
        <?php
    }
    , 21 # after enqueued footer scripts
);
Walf
sumber
-2

Anda dapat menggunakan wp_footertindakan untuk melakukan ini. Periksa codex untuk wp_footer .

Rutwick Gangurde
sumber
Saya tahu, tetapi bagaimana Anda bisa menentukan bahwa skrip yang Anda tambahkan ke catatan kaki tergantung pada jquery. Periksa hasil edit saya untuk menjadi lebih khas.
Saif Bechan
Apakah Anda bahkan repot-repot membaca sekitar naskah sebelum memilih jawaban orang? Pernahkah Anda membaca tentang in_footerargumennya wp_enqueue_script? Baca ini: codex.wordpress.org/Function_Reference/wp_enqueue_script . Ini memberi tahu Anda cara menggunakannya dengan wp_footertindakan.
Rutwick Gangurde