Wo platziere ich meine benutzerdefinierten Funktionen in WordPress?

Lesezeit: 4 Minuten

Ich reiße mir die Haare aus. Ich habe einige einfache Funktionen erstellt, die Zufallszahlen generieren, die aus einer Datenbank gezogen werden, die ich auf WordPress-Seiten verwenden möchte. (Und rufen Sie sie dann aus den Designdateien auf, z. B. header.php oder page.php.)

Ich habe versucht, die Funktionen in die functions.php einzufügen, die sich im Thema befindet (gemäß der Dokumentation, die ich gelesen habe), aber ich erhalte immer wieder die Fehlermeldung “Aufruf einer undefinierten Funktion”! Was in aller Welt mache ich falsch?

Beispiel, hier ist eine Funktion innerhalb der functions.php

function randomPollNumber() {
///this gets a random active poll number
    $sql12 = "SELECT id FROM poll WHERE removed = 0 AND active = 1 ORDER BY RAND() LIMIT 1";
    $result12 = mysql_query($sql12);
    $myrow12 = mysql_fetch_row($result12);
    $pollquestionid = $myrow12[0];
    return $pollquestionid;
}

Und ich rufe es aus der Datei header.php mit diesem auf

<?php echo randomPollNumber(); ?>

Und ja, ich habe versucht, if_function_exists zu verwenden, aber natürlich kann es die Funktion nicht finden, also existiert sie natürlich nicht. Bitte helfen?

Sehr seltsam – einige Debugging-Tipps:

  1. Setzen Sie die(‘functions.php file loading’)-Anweisung an den Anfang von functions.php (nicht innerhalb einer Funktion). Wenn es nicht stirbt, wissen Sie, dass die Datei nicht geladen wird.
  2. Wenn es stirbt, überprüfen Sie Ihre Rechtschreibung (kopieren Sie den Funktionsnamen aus der functions.php und fügen Sie ihn in Ihr Echo ein […]). Es ist erstaunlich, wie oft ich SICHER bin, dass ich es richtig geschrieben habe, obwohl ich es tatsächlich nicht getan habe.
  3. Wenn es nicht stirbt, überprüfen Sie, ob Ihre Datei definitiv functions.php heißt und dass sie sich definitiv im richtigen Themenordner für das Thema befindet, das Sie codieren.
  4. Es ist möglich, dass die Datei functions.php einen Fehler enthält und daher nicht geparst wird, daher kann WordPress die Funktion nicht finden. Überprüfen Sie Ihre Protokolle auf Fehler. Laden Sie die Funktionsdatei und sonst nichts und prüfen Sie, ob die Funktion funktioniert. Benutzt du PHP Unit oder so?

  • Ich dachte, du hättest mich gerettet Blowski! Aber leider nein. Ich versuchte 1, es starb. Habe Schritt 2 gemacht, sie passten zusammen. 3. Ja. Funktionen. 4. Ich habe NUR die function.php geladen und leider hatte sie VOR meinen Funktionen Fehler. (Ironischerweise existiert keine Funktion für “add_action(‘admin_head’, ‘kubrick_theme_page_head’);”) ALSO, ich habe es herausgenommen … es lief perfekt …. war begeistert …. probiert …. und das Gleiche….Funktion nicht vorhanden!! GRRR. Ich freue mich aber über die Tipps und werde sie mir für die Zukunft merken. Oh, ich habe keine Ahnung, was PHP Unit ist ….

    – NarfFlarf

    14. April 11 um 19:05 Uhr


  • @NarfFlarf: Ich weiß nicht, was die error_reporting-Einstellungen von WordPress standardmäßig sind, aber versuche es auszuführen error_reporting(E_ALL | E_STRICT); an der Spitze Ihrer functions.php Datei. Wenn in dieser Datei irgendetwas wackelt, sollte Ihnen das sagen, was/wo.

    – Agentenrätsel

    14. April 11 um 20:42 Uhr

  • Mit der PHP-Einheit können Sie die Funktionen selbst testen, um zu sehen, ob sie funktionieren. Der Punkt von @AgentConundrum ist auch gut, obwohl ich ihn zur Root-Datei index.php hinzufügen und ini_set(‘display_errors’, ‘1’); auch drin. Wenn Sie es zur Datei functions.php hinzufügen, werden keine Fehler zurückgegeben, wenn sie auftreten, bevor diese Datei geladen wird. Stellen Sie nur sicher, dass Sie den Code wieder entfernen, bevor Sie die Website live schalten. Eine weitere Sache – versuchen Sie, jeden anderen Code aus der functions.php zu entfernen. Habe nur deine Funktion und sonst nichts.

    – Dan Schläge

    14. April 11 um 20:46 Uhr


  • Gut. Nuffin. 🙁 Der einzige Fehler, den ich für die Fehlerberichterstattung erhalten habe, ist “Strict Standards: is_a(): Deprecated”. Und ich habe versucht, nur MEINE Funktionen zusammen mit einem lustigen ECHO einzufügen, nur um es zu sehen. Es hat tatsächlich das Echo geladen. Ich bin dabei ein Verlust … und ich sagte meinem Kunden, das wäre ein einfacher Fall. Ich muss es lieben, oder? lol Vielleicht ist meine Vorlage selbst …. etwas zu tun …?

    – NarfFlarf

    15. April 11 um 0:29 Uhr


  • @NarFlarf Ich weiß, dass dies gegen Best Practice verstößt, aber Sie können die Funktion in die relevante Vorlage aufnehmen und sie dann in die Datei functions.php umgestalten, wenn Sie herausfinden, was falsch ist – zumindest wird Ihr Kunde zufrieden sein. Es hört sich immer noch so an, als ob functions.php nicht geladen wird, bevor header.php geparst wird. Versuchen Sie, vor dem Aufruf Ihrer benutzerdefinierten Funktion include_once “./functions.php” in Ihrer header.php-Datei zu verwenden.

    – Dan Schläge

    15. April 11 um 1:43 Uhr

.

759050cookie-checkWo platziere ich meine benutzerdefinierten Funktionen in WordPress?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy