Ich habe eine Funktion mit dem Shortcode Exec PHP-Plugin geschrieben und die Funktion funktioniert hervorragend, wenn ich sie im Editor ausführe.
Wenn ich es in ein Plugin verschiebe, sehe ich im Protokoll Fehler wie diese:
PHP Fatal error: Call to undefined function wp_create_category()
Mir ist klar, dass dies an fehlenden Includes usw. liegt.
Was ist der richtige Weg, um die eingebauten WordPress-Funktionen für ein Plugin einzubinden?
Mein Plugin verwendet die folgenden WordPress-Funktionen
wp_create_category
username_exists
wp_generate_password
wp_create_user
wp_insert_post
update_post_meta
add_post_meta
Verwenden Sie den folgenden Code, der gut funktioniert, habe ich getestet
require_once(ABSPATH . 'wp-config.php');
require_once(ABSPATH . 'wp-includes/wp-db.php');
require_once(ABSPATH . 'wp-admin/includes/taxonomy.php');
Versuchen Sie, dies in Ihre Datei aufzunehmen, und lassen Sie es mich dann wissen —
require_once(WORDPRESS_HOME. 'wp-config.php');
require_once(WORDPRESS_HOME. 'wp-includes/wp-db.php');
require_once(WORDPRESS_HOME. 'wp-admin/includes/taxonomy.php');
Ich weiß, das ist eine sehr alte Frage, aber irgendwie hat niemand eine Lösung erwähnt, die ich im Sinn habe.
Ich denke, der richtige Weg, dies zu tun, besteht darin, den richtigen Init-Hook in Ihrem Plugin zu verwenden. Das Hinzufügen von require_once() scheint mir ein Hack zu sein.
Einige Funktionen werden also nur für den Admin-Bereich und einige nur für das Frontend geladen. Abhängig davon, verwenden Sie den richtigen Haken in Ihrem Plugin.
add_action('init', function () {}
oder
add_action('admin_init', function () {}
Sie können natürlich beide in einem Plugin haben.
11749700cookie-checkWordPress-Fehler: Aufruf einer undefinierten Funktion im Pluginyes
Versuchen Sie, dies in Ihre Datei aufzunehmen, und lassen Sie es mich dann wissen — require_once (WORDPRESS_HOME. ‘wp-config.php’); require_once(WORDPRESS_HOME. ‘wp-includes/wp-db.php’); require_once(WORDPRESS_HOME. ‘wp-admin/includes/taxonomy.php’);
– tauschen
29. August 2012 um 3:54 Uhr
Das funktioniert. Warum reichen Sie es nicht als Antwort ein, damit ich Sie gutschreiben kann?
– Kevin
29. August 2012 um 4:19 Uhr
fertig.. jetzt als Antwortprüfung hinzugefügt 🙂 und danke, dass du deine Bedenken gezeigt hast 🙂
– tauschen
29. August 2012 um 4:52 Uhr