it-swarm.asia

Bir Eklentiyi Yalnızca Seçili Sayfalara CSS ve JS Yükle?

Eklentinin, CSS stil sayfaları ve JavaScript JS dosyalarını yüklemesini yalnızca ihtiyaç duydukları sayfalarla sınırlandırmasını sağlamak istiyorum.

Soruma bir örnek, sitemdeki bir sayfada form oluşturmak için kullandığım İletişim Formu 7 'nin (" bana ulaşın " sayfası) eklentisidir. Ancak, aşağıdaki satırları web sitesindeki HER sayfaya/yazıya ekler:

<link rel='stylesheet' id='contact-form-7-css'  href='http://www.r-statistics.com/wp-content/plugins/contact-form-7/styles.css?ver=2.3.1' type='text/css' media='all' /> 

<script type='text/javascript' src='http://www.r-statistics.com/wp-content/plugins/contact-form-7/scripts.js?ver=2.3.1'></script> 

Bu, beni bu sitenin sadece bir sayfada ilgilendiren bir uzantı için sitemin yüklenme süresini olumsuz etkilediğinden şüphelendiriyor.

Dolayısıyla benim sorum, bu fazladan satırları, "Bana Ulaşın" sayfası dışında, ancak eklentiyi devre dışı bırakmadan tüm sayfalardan nasıl kaldırabilirim?

9
Tal Galili

Stiller ve komut dosyaları her zaman, işlev için belirli bir eylem kancasına bağlı olması gereken wp_enqueue_script() ve wp_enqueue_style() işlevleri tarafından ayarlanır. İletişim Formu 7'ye bir göz attım ve sanki wpcf7_enqueue_scripts ve wpcf7_enqueue_styles kancalarına eklemek için wp_print_scripts ve wp_print_styles eylem etiketlerini kullanıyor gibi görünüyor.

Yani, yapmanız gereken şey komut dosyalarını ve stilleri her sayfadan ama iletişim sayfanızdan ayırmak. wp_head eylemi komut dosyasından önce harekete geçirilir ve eylemlere stil ekler, bu nedenle kendi işlevlerinize böyle bir şey eklemeniz gerekir. Php dosyası:

function remove_wpcf7_extras() {
    remove_action('wp_print_scripts', 'wpcf7_enqueue_scripts');
    remove_action('wp_print_styles', 'wpcf7_enqueue_styles');
}

if( ! is_page('contact me') ) {
    add_action('wp_head', 'remove_wpcf7_extras');
}

is_page () işlevi, iletişim sayfasında olduğunuzda true değerini döndürür (adın "benimle iletişime geçiyor" olduğu varsayılarak) ... filtre için sayfa fişini ve sayfa kimliğini de kullanabilirsiniz. Diğer tüm sayfalarda, if() koşulu, wp_head ve wp_print_scripts eylemlerinden hemen önce başlatılan wp_print_styles eylemine komut dosyası/stil kaldırma işlevini ekler.

Bu, ekstra kodu sayfalarınızdan kaldırmalıdır; eklentiyi devre dışı bırakmanız veya herhangi bir çekirdek dosyayı düzenlemeniz gerekmez. Yukarıda listelediğim fonksiyonlar ve kod, ileride Contact Form 7'yi kaldırırsanız temanızın bozulmasına neden olmaz ... böylece gelecekteki yükseltme uyumluluğu hakkında endişelenmenize gerek kalmaz.

9
EAMann