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)
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:
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!