Gewusst wie: überschreiben der plugin-Funktion im theme ist functions.php WordPress

Gewusst wie: überschreiben der plugin-Funktion in den theme-Ordner ist functions.php?

EDIT:

Unten ist mein code:

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;
    }
}

und wenn ich das plugin aktivieren, es gibt mir fatal error:

Cannot redeclare userphoto_filter_get_avatar().

Bitte erklären, was ich falsch mache.

  • Look at Pluggable_Functions.
  • Wo haben Sie das oben besagte code? Teilen Sie den code Ihrer plugin-Datei und das Thema functions.php Datei.
InformationsquelleAutor user2110253 | 2016-04-05



One Reply
  1. 8

    Fügen Sie Ihre benutzerdefinierte überschreiben von code zu einem Muss Plugin Verwenden.

    Steckbare Funktionen definiert plugins können überschrieben werden, nur, indem ein anderes plugin oder ein Muss Plugin Verwenden. Hinzufügen von code zu einem anderen plugin nicht zuverlässig. So ist es am besten eine mu-plugin.

    Beachten Sie, dass steckbaren Funktionen, die definiert sind in der WordPress-core kann überschrieben werden, indem eine Funktion mit dem gleichen Namen in unserer plugin oder theme.

    Den code Hinzugefügt, um das Thema s functions.php die Datei wird ausgeführt, später ich.e nach der plugin-code ausgeführt wurde. So, das hinzufügen unserer „over write“ – Funktion in der theme-Datei löst die cannot redeclare Fehler.

    Grund:

    Die Reihenfolge der Ausführung von verschiedenen WordPress-Aktionen, die angegeben wird in der Plugin_API/Action_Reference. Wie können wir von hier aus sehen können, das vereinfacht die Reihenfolge der Ausführung ist

    1. muplugins_loaded
    2. plugins_loaded
    3. after_setup_theme

    So, um die override-Funktionalität definiert in den zweiten Haken (ich.e in der plugin), wir müssen neu definieren, ihn in einen hook, der ausgeführt wird, bevor Sie (ich.e Muss in der Verwendung von plugins).

    • Das war super hilfreich. Danke. Leicht zu beheben, überschreiben ein theme installiert-Funktion, die es in ein plugin eher als Design-Dateien, die somit nicht einfach überschrieben, in der functions.php Datei.
    • Froh, dass ich behilflich sein könnte.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.