2016-04-05 17 views
2

Tema klasörünün functions.php içindeki eklenti işlevi nasıl geçersiz kılınır?Temanın işlevleri içinde eklenti işlevi nasıl geçersiz kılınacak? Wordpress

DÜZENLEME:

if(!function_exists('userphoto_filter_get_avatar')){ 
    function userphoto_filter_get_avatar($avatar, $id_or_email, $size, $default){ 
     global $userphoto_using_avatar_fallback, $wpdb, $userphoto_prevent_override_avatar; 
     if($userphoto_using_avatar_fallback) 
      return $avatar; 

     if(is_object($id_or_email)){ 
      if($id_or_email->ID) 
       $id_or_email = $id_or_email->ID; 
      //Comment 
      else if($id_or_email->user_id) 
       $id_or_email = $id_or_email->user_id; 
      else if($id_or_email->comment_author_email) 
       $id_or_email = $id_or_email->comment_author_email; 
     } 

     if(is_numeric($id_or_email)) 
      $userid = (int)$id_or_email; 
     else if(is_string($id_or_email)) 
      $userid = (int)$wpdb->get_var("SELECT ID FROM $wpdb->users WHERE user_email = '" . mysql_escape_string($id_or_email) . "'"); 

     if(!$userid) 
      return $avatar; 

     //Figure out which one is closest to the size that we have for the full or the thumbnail 
     $full_dimension = get_option('userphoto_maximum_dimension'); 
     $small_dimension = get_option('userphoto_thumb_dimension'); 
     $userphoto_prevent_override_avatar = true; 
     $img = userphoto__get_userphoto($userid, (abs($full_dimension - $size) < abs($small_dimension - $size)) ? USERPHOTO_FULL_SIZE : USERPHOTO_THUMBNAIL_SIZE, '', '', array(), ''); 
     $userphoto_prevent_override_avatar = false; 
     if($img) 
      return $img; 

     return $avatar; 
    } 
} 

ve ben eklentiyi aktif olduğunda, bana ölümcül hata veriyor:

Cannot redeclare userphoto_filter_get_avatar() .

yanlış yapıyorum ne anlatmak Lütfen Aşağıda
benim kodudur .

+0

[Pluggable_Functions] 'a bakın (https://codex.wordpress.org/Pluggable_Functions). –

+0

Yukarıda bahsedilen kodu nereye eklediniz? Kodu hem eklenti dosyasından hem de tema functions.php dosyasından paylaşın. –

cevap

5

Özel geçersiz kılma kodunu Must Use Plugin'a ekleyin. eklentileri tanımlanan

Pluggable functions başka bir eklenti kullanarak sadecegeçersiz kılınabilir veya Plugin kullanın olmalı. Kodu başka bir eklentiye eklemek güvenilir değildir. Yani, bir mu-plugin kullanmak en iyisidir.

WordPress çekirdeğinde tanımlanan takılabilir işlevlerin, eklenti veya temada aynı adın bir işlevi kullanılarak geçersiz kılınabileceğini unutmayın.

Temanın functions.php dosyasına eklenen kod, eklenti kodu yürütüldükten sonra çalıştırılacaktır. Bu yüzden, tema dosyasındaki yazım fonksiyonumuzu eklemek cannot redeclare hatasını tetikleyecektir.

Sebep:

çeşitli WordPress eylemlerin icra emri Plugin_API/Action_Reference belirtilir. Burada da görebileceğiniz gibi, basitleştirilmiş yürütme sırası,

  1. muplugins_loaded
  2. plugins_loaded
  3. after_setup_theme

Yani, (eklenti yani) ikinci kanca tanımlanan işlevselliği geçersiz kılmak için ise Önceden çalıştırılan bir kancada yeniden tanımlamamız gerekir (yani Kullanım Koşulları eklentileri).

+1

Bu, süper yardımcı oldu. Teşekkürler. Tema dosyaları yerine bir eklenti içinde bulunan bir tema yüklü işlevi geçersiz kılmak için kolay düzeltme, böylece functions.php dosyasında kolayca geçersiz kılınamaz. –

+0

Sevindim, yardımcı olabilirim. –

İlgili konular