(Advanced:) register_activation_hook im Theme

  • Hello,

    vorab: Das ist jetzt etwas zu grübeln und tüfteln.

    Ich habe mir die settings API zu Gemüte geführt um Administrations-Seiten für ein Theme zu bauen. Das funktioniert soweit auch ganz gut. Nur die function "register_activation_hook" will sich nicht für Themes verwenden lassen, weil leider als Pfad das WP_PLUGIN_DIR angegeben wird. Verantwortlich dafür sind folgende Teile aus der /wp-includes/plugin.php (line 490 & 547)

    Code
    547  function [URL="http://xref.yoast.com/2.9.2/_functions/register_activation_hook.html"]register_activation_hook[/URL]([URL="http://xref.yoast.com/2.9.2/_variables/file.html"]$file[/URL], [URL="http://xref.yoast.com/2.9.2/_variables/function.html"]$function[/URL]) {
     548      [URL="http://xref.yoast.com/2.9.2/_variables/file.html"]$file[/URL] = [URL="http://xref.yoast.com/2.9.2/_functions/plugin_basename.html"]plugin_basename[/URL]([URL="http://xref.yoast.com/2.9.2/_variables/file.html"]$file[/URL]);
     549      [URL="http://xref.yoast.com/2.9.2/_functions/add_action.html"]add_action[/URL]('activate_' . [URL="http://xref.yoast.com/2.9.2/_variables/file.html"]$file[/URL], [URL="http://xref.yoast.com/2.9.2/_variables/function.html"]$function[/URL]);
     550  }

    Einige Plugin-functions wie wp_enqueue_style & _script od die settings API kann man ja ganz gut auch für Themes verwenden. Was Sinn macht, weil sich ja rein technisch nicht allzuviel zwischen Themes und Plugins unterscheidet. Leider komme ich aber nicht auf die Lösung, wie ich "register_activation_hook" zum funktionieren bekomme. Meine derzeitige Lösung (die nicht funktioniert) wie folgt:

    Code
    function switch_path($file) {
            $file = get_bloginfo('stylesheet_directory') . "/lib/func/options-home.php";
            return $file;
        }
        register_activation_hook(__FILE__, 'options_test_defaults');
        apply_filters( 'activate_' . __FILE__, 'switch_path' ); // die Ladereihenfolge der function, bzw. apply_filters macht keinen Unterschied

    Könnte mir da jemand weiter helfen? Stehe schon kurz davor ein trac-Ticket zu schreiben. Danke!

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!