Die Registrierung des Shortcodes im Aktivierungs-Hook funktioniert nicht

Lesezeit: 2 Minuten

Benutzer-Avatar
Jakob Morris

Ich habe an einem Plug-in gearbeitet und versucht, einen Shortcode innerhalb einer Funktion hinzuzufügen, die als Aktivierungs-Hook registriert ist. Ich weiß, dass die Funktion aufgerufen wird, denn wenn ich innerhalb der Funktion eine echo-Anweisung hinzufüge, beschwert sich WordPress über den Empfang von Eingaben, nachdem der Header gesendet wurde, aber der Shortcode wird nicht angezeigt. Wenn ich mich jedoch bewege add_shortcode außerhalb der Funktion, dann funktioniert alles einwandfrei.

Irgendwelche Ideen, was falsch läuft?

Das funktioniert:

<?php
/*
Plugin Name: Testing
*/

function short_code($atts) {
    return "This is a test";
}

function activate() {
    add_shortcode('testing', 'short_code');
}

//register_activation_hook(__FILE__, 'activate');
add_shortcode('testing', 'short_code');

Das geht nicht:

<?php
/*
Plugin Name: Testing
*/

function short_code($atts) {
    return "This is a test";
}

function activate() {
    add_shortcode('testing', 'short_code');
}

register_activation_hook(__FILE__, 'activate');
//add_shortcode('testing', 'short_code');

  • Willkommen bei Stapelüberlauf! Sie können lernen, wie man fragt und ein reproduzierbares Minimalbeispiel erstellen. Das erleichtert es uns, Ihnen zu helfen.

    – Fägy

    16. Februar 2017 um 23:11 Uhr

  • @Faegy hat meine Frage mit einem Minimalbeispiel aktualisiert

    – Jakob Morris

    16. Februar 2017 um 23:50 Uhr

register_activation_hook wird nur einmal ausgelöst – wenn das Plugin aktiviert ist. Ihr Shortcode wird also nur einmal bei der Aktivierung registriert und ist dann nicht mehr verfügbar.

Du solltest benutzen add_shortcode wie im ersten Beispiel. add_shortcode selbst ein Hook ist, muss es nicht in einem anderen Hook sein.

  • das funktioniert super! Das habe ich einfach angenommen add_shortcode registriert bis remove_shortcode hieß.

    – Jakob Morris

    17. Februar 2017 um 0:07 Uhr

  • Froh, dass ich helfen konnte!

    – Ich bin Joe Too

    17. Februar 2017 um 0:38 Uhr

  • Ich hatte das gleiche Problem. Ich bin immer noch verwirrt darüber, warum es den Haken für diesen Shortcode nicht registrieren würde? Ich habe Fälle gesehen, in denen eine Funktion, die den Shortcode hinzufügt, eingehakt ist add_action('init', 'the_handler'); und es funktioniert?

    – pdp2

    21. September 2019 um 7:03 Uhr

  • Wenn Sie init eine Aktion hinzufügen, wird diese Aktion jedes Mal ausgeführt, wenn WordPress geladen und ausgeführt wird. Wenn Sie es zu register_activation_hook hinzufügen, wird es nur ausgeführt, wenn das Plugin aktiviert wird. Die Registrierung Ihres Kurzcodes muss jedes Mal erfolgen, wenn WordPress geladen wird, weshalb es auf init funktioniert. Die Registrierung eines Kurzcodes muss jedes Mal erfolgen, wenn WordPress ausgeführt wird – es ist nicht so, dass Sie ihn einmal registrieren und er dauerhaft existiert. Es „registriert“ sich jedes Mal. Sie können dies auf init tun, aber die Verwendung von add_shortcode ist eine bessere Vorgehensweise, da es dafür entwickelt wurde.

    – Ich bin Joe Too

    21. September 2019 um 12:49 Uhr

1070380cookie-checkDie Registrierung des Shortcodes im Aktivierungs-Hook funktioniert nicht

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

Privacy policy