Bir javascript parçacığını jQuery gerektiren altbilgiye ekleme


27

Bu kodu kullanarak jquery gerektiren wordpress altbilgisine bir komut dosyası ekleyebileceğimi biliyorum:

<?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');
?>

Ama ya normal bir jquery pasajını eklemek istiyorum, bir dosyaya değil. Bu nasıl yapılabilir?

Düzenle

Altbilgiye bir şey eklemek için bu komut dosyasını kullanabileceğimi biliyorum:

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

Ancak kullanılan betiği nasıl belirleyebilirim, çalıştırılması için jquery gerekir.


Bunu yapmak için yapabileceğim bir fonksiyon yok, neden wp_register_scriptve wp_enqueue_scriptvar, fakat jquery'yi kullanarak kontrol edebilirsiniz.
Wyck

2
Olumsuz oy için özür dilerim, ancak sorumu anladığınızı sanmıyorum. Kodeksi okudum ve seçenek hakkında bilgim var. Ama ben wp_enqueue_scriptbir altbilgi içine bir komut dosyası istemiyorum, jquery gerektiren altbilgiye bir snippet eklemek istiyorum. Ben doğrudan kodeksi alınan cevap reddetti. Kodeksi okudum ve bir cevap bulamadım, bu yüzden bir soru soruyorum. Beni tekrar kodeksi yönlendirirseniz, oyumuzu reddederim.
Saif Bechan

Teşekkürler Wyck, bence durum bu, soruyu doğru anladığınız için teşekkür ederim. Komut dosyasının çalıştırılabildiğinden emin olmak yerine sadece harici bir JS betiği kullanacağımı düşünüyorum.
Saif Bechan

Yanıtlar:


30

Bunu yapmanın en kolay yolu aslında bir kombinasyonudur wp_enqueue_script , Saif ve v0idless'in zaten başvurduğu alt eylemlerin . JQuery'i temalarım ve eklentilerimde sıklıkla kullanıyorum ancak diğer tüm komut dosyalarını da altbilgiye koyuyorum.

Aslında işleri sıraya koymanın en iyi yolu şudur:

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' );

Ancak bu kod snip, senaryoyu sıraya koyan kişi olduğunuzu varsayar, yani bunu kendi eklentiniz veya temanızda yapıyorsunuz.

Şu anda, WordPress altbilgisine satır içi bir komut dosyası eklemenin ve bağımlılıklarla yüklemenin bir yolu yoktur. Ama eğer istersen bir alternatif var.

Alternatif

WordPress komut dosyaları ile çalıştığında, onları içeride tutmak için onları bir nesneye dahili olarak yükler. Nesnenin içinde esasen 3 liste vardır:

  • kayıtlı
  • kuyruk
  • tamam
  • yapmak

Bir betiği ilk kaydettirdiğinizdewp_register_scripts() , kayıtlı listeye yerleştirilir. Ne zaman sana wp_enqueue_script()senaryo, bu kuyruk listeye kopyalanan. Sayfaya yazdırıldıktan sonra, yapılan listeye eklenir.

Bu nedenle, altyazı komut dosyanızı jQuery gerektirecek şekilde sıraya koymak yerine, jQuery kullanması gerektiğini belgeleyebilir ve jQuery'nin yüklendiğinden emin olmak için programlı olarak kontrol edebilirsiniz.

Bu wp_script_is(), komut dosyasının nerede listelendiğini kontrol etmek için kullanır .

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

Sen belki de altbilgi yüklemeye jQuery zorlamak için bu aynı kodu kullanabilmek için, ama bu test etmedim ... kilometre değişebilir Gözat yüzden.


Sağladığınız kod pasajı WordPress eklentisi geliştirme standartları tarafından kabul ediliyor mu? Eğer öyleyse, onu eklentimde kullanacağım ... lütfen bunun için bana bir cevap ver ...
laraib

Son parçacığı mı? Hayır. WordPress eklentileri her zaman script gereksinimlerini zorlamalıdır. JQuery'yi bu şekilde kuyruk sisteminin dışına yüklemeye zorlamak, yalnızca ortamın% 100'ünü kontrol ettiğiniz kendi sitenizde yapmanız gereken şeydir. Öyle asla bir eklenti bunu yapabilmeleri için uygun.
EAMann

o zaman bana bunun için biraz çalışma örneği verebilir misiniz ... ????
laraib

Çünkü şimdiye dek ilk WordPress eklentimi geliştiriyorum ve WordPress ekibi tarafından kabul edilmesini isterim ... herhangi bir cevabınızı bekliyorum .... Eklentimi kabul edip yapabilmem için bunun hakkında bir şeyler söyleyin. ...
laraib

12

WordPress 4.5'ten itibaren satır içi betiği ile ekleyebilirsiniz wp_add_inline_script(). Bir javascript parçacığını jQuery gerektiren altbilgiye eklemek için, bu kod size yardımcı olur

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' );

wordpress jquery ile wp_add_inline_script


1

wp_footerİşlemi şu şekilde kullanın :

add_action( 'wp_footer', 'wpse33008');
function wpse33008() {
?>
<script type="text/javascript">
    /** INSERT SCRIPT HERE **/
</script>
<?php
}

1
Bu iyi bir cevap değil. Ben jQuery gerekli komut dosyası nasıl belirtebilirim diye sordum. Eğer kullanıcı çalışan jquery yoksa, uygulamanız çalışmayacaktır.
Saif Bechan

0

Biliyorum OP jQuery bir şartı belirtmek istiyor ve WordPress' yazarları parçacıkları komut dosyaları bitişik kuyruğa izin gerekirdi, ama bunu zorlamak için çalışmıyoruz tavsiye yüzden, olmadı. Kuyruğu veya sırasını hiç karıştırmak istemiyorsanız, benim gibi (çünkü komut dosyalarını birleştiren ve optimize eden diğer eklentileri kullanıyorum), o zaman cevap gerçekten şu şekilde wp_footereylem kullanmaktır :

<?php

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

-2

Bunu wp_footeryapmak için eylemi kullanabilirsiniz . Wp_footer kodeksini kontrol edin .


Biliyorum, ancak altbilgiye eklediğiniz komut dosyasının jquery'ye bağlı olduğunu nasıl belirleyebilirsiniz. Daha belirgin olmak için düzenlememi kontrol edin.
Saif Bechan

İnsanların cevaplarını oylamadan önce kodeksi okumak için uğraşıyor musunuz? in_footerArgümanı hiç okudunuz wp_enqueue_scriptmu? Bunu okuyun: codex.wordpress.org/Function_Reference/wp_enqueue_script . Size wp_footereylem ile nasıl kullanılacağını anlatır .
Rutwick Gangurde
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.