2017-02-01 22 views
0

Ich habe gerade das Debuggen einer WordPress-Funktion abgeschlossen. Das Debugging hat mich verrückt gemacht, Fehler in der Abfrage zu finden. Ich sehe jetzt keine Fehler in der Ausführung der Funktion, aber das Ergebnis wird nicht über die Rückgabe ausgegeben. Die offensichtliche Antwort ist, dass die Abfragen nichts zurückgegeben haben, derselbe Code funktionierte trotz der Fehler perfekt, bevor ich die Abfragesyntax korrigierte. Jetzt, da keine Fehler angezeigt werden, wird die Ausgabe auf der Seite nicht angezeigt. Andere Hinweise sind, dass ich ein Echo hinzugefügt habe und das Echo auf verschiedenen Seiten erschien, obwohl der Code nur auf der Profilseite laufen sollte. Ich bin neu in PHP, so habe ich verloren zu verstehen, wie Code ohne erfasste Fehler ausgeführt werden kann und dennoch nicht zu funktionieren scheint. Insbesondere, obwohl das Fehlerprotokoll Fehler zeigte, funktionierte es tatsächlich wie beabsichtigt. Es ist eine einfache Abfrage, um einen Mitgliedermitgliedschaftsnamen zu finden, indem zuerst nach der Mitgliedschaftsebene (erste Abfrage) und dann nach dem tatsächlichen Namen der Mitgliedschaft gesucht wird (zweite Abfrage basierend auf der ersten). Der "return $ text. $ Content;" Linie scheint nicht zu feuern. Hier ist der Code:WordPress add_filter Funktion gibt keine Ausgabe zurück

function Welcome($content) { 
$welcome = ''; 
if (is_page('Profile')) 

    $url = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 
    $numb = str_replace('mysite.org/profile/?user_id=', '', $url); 

    global $wpdb; 
    $query = $wpdb->prepare ('SELECT `membership_level_id` FROM `mm_user_data` WHERE `wp_user_id` = %d', '$numb'); 
    $idnum= $wpdb->get_var($query); 

    $query = $wpdb->prepare ('SELECT `name` FROM `mm_membership_levels` WHERE `id` = %d', '$idnum'); 
    $text= $wpdb->get_var($query); 
    $text="<h3>$text</h3>"; 

return $text.$content; 
} 

add_filter('the_content', 'Welcome'); 

Antwort

0

Danke für den Tipp auf die Zitate! Um Ihre Frage zu beantworten, habe ich mich bemüht, Beispielcode mit allen Arten von Schreibweisen zu betrachten ... Zitat, keine Anführungszeichen, Anführungszeichen. Einige erzeugten ein korrektes Ergebnis, aber auch verschiedene Fehler. Als PHP-Neuling habe ich den Rat einer der Fehlermeldungen genommen und phpMySQL verwendet, um eine SQL-Zeichenfolge zu entwerfen. Wenn es von der App in PHP konvertiert wurde, hatte es die einfachen Anführungszeichen wie gezeigt. Der Code wurde zum ersten Mal ohne Fehler ausgeführt, gab jedoch kein Ergebnis zurück. Ich habe den Code modifiziert, indem ich die Anführungszeichen von $ tumb und $ idnum lösche und voila '; es ergab schließlich das korrekte Ergebnis und hatte keine Fehler. Hier ist der Code, der funktioniert:

function Welcome($content) { 
$welcome = ''; 
if (is_page('Profile')) 

    $url = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 
    $numb = str_replace('mysite.org/profile/?user_id=', '', $url); 

    global $wpdb; 
    $query = $wpdb->prepare ('SELECT `membership_level_id` FROM `mm_user_data` WHERE `wp_user_id` = %d', $numb); 
    $idnum= $wpdb->get_var($query); 

    $query = $wpdb->prepare ('SELECT `name` FROM `mm_membership_levels` WHERE `id` = %d', $idnum); 
    $text= $wpdb->get_var($query); 
    $text="<h3>$text</h3>"; 

    return $text.$content; 
} 


add_filter('the_content', 'Welcome'); 
+0

Für jeden, der interessiert ist, wurde der Code entworfen, um den Member MemberMouse Mitgliedsname auf eine WPS Pro Profilseite einzufügen. Membermouse hat keinen Smartcode zum Abrufen von Benutzerinformationen außer für einen angemeldeten Benutzer (frustrierend!). Wenn also ein Besucher auf das WPS Pro-Verzeichnis klickt, um eines unserer professionellen Mitglieder zu sehen, gibt es keinen Hinweis auf ein Mitgliedschaftsniveau, das den Kenntnisstand angibt von dem Profi. Jetzt wird die Mitgliedschaftsstufe des Profilbesitzers oben auf der WPS Pro-Profilseite angezeigt, damit das Pro gut angezeigt wird. – Homeacoustics

0

1) Sie Klammern für if verpasst. Diese Bedingung if (is_page('Profile')) funktioniert nur für die erste Zeile danach;

2) Die Rückruffilterfunktion muss auf jeden Fall einen Wert zurückgeben. Also müssen Sie etwas wie dieses schreiben:

function Welcome($content) { 
    if (is_page('Profile')) { 

     // your changes for content 

     return $content; 
    } 
    return $content; 
} 

3) Warum verwenden Sie einfache Anführungszeichen für Abfrageparameter? Wenn Sie %d durch Ihre Variable ersetzen müssen, müssen Sie $numb ohne Anführungszeichen (oder in doppelte Anführungszeichen) schreiben. Lesen Sie mehr here.

Verwandte Themen