it-swarm.com.de

add_action in functions.php, do_action im Plugin?

Ich versuche, eine add_action -Funktion in meiner derzeit aktiven WordPress-Design-functions.php -Datei für eine definierte do_action -Funktion in einem aktivierten WordPress-Plugin festzulegen.

Die add_action Funktion in meiner aktuell aktiven WordPress Theme functions.php Datei funktioniert nicht.

Es funktioniert jedoch, wenn ich die Funktion add_action aus meiner derzeit aktiven WordPress-Theme-Datei functions.php direkt vor der Funktion do_action in die aktivierte WordPress-Plugin-Datei kopiere.

Gibt es eine Möglichkeit, dies zu tun?

1
Boyster

Hier im Dunkeln gedreht, aber ...

Es ist durchaus möglich, dass das Plugin mit der Definition do_action verknüpft wird, bevor das Thema verarbeitet wird.

Finden Sie heraus, wo der do_action definiert ist und wann er angehängt wird.

Möglicherweise müssen Sie sich an die Funktion binden, mit der auch die do_action-Definition verknüpft ist, und DANN an diese Aktionsdefinition binden.

Beispiel:

Öffnen Sie die Plugin-Datei mit der do_action -Definition, mit der Sie Ihre benutzerdefinierte Funktion verknüpfen möchten.

Überprüfen Sie, ob sich die do_action-Definition in einer Plug-in-Funktion befindet.

In diesem Fall durchsuchen Sie das Plugin, um eine add_action()-Referenz dieses bestimmten Funktionsnamens zu finden, die die do_action-Definition enthält.

Notieren Sie, was dieser Haken ist.

Jetzt wissen Sie, wann WordPress die Funktion dieses Plugins aufruft, die die do_action-Definition enthält.

In der functions.php -Datei Ihres Themas könnten Sie also etwas haben, das dem folgenden Code ähnelt:

/**
 * This is the WordPress action the plugin's do_action function definition is 
 * hooked to.
 *
 * Example: This hook could be anything. I'm not saying the hook will be: "plugins_loaded" 
 * for sure, but if it was "plugins_loaded"... After WordPress loads and instantiates all 
 * of it's activated plugins, WordPress will fire the plugin's function containing the 
 * plugin's do_action definition (As long as the plugin you are trying to work with is 
 * activated). So you're getting on the same level as the plugin when it needs WordPress to 
 * execute this particular defined custom action and telling WordPress that your theme function
 * needs to be on that same level as well, before it can hook to your plugin's do_action reference.
 */
add_action('plugins_loaded', 'wpse_setup_theme');
function wpse_setup_theme(){
    /**
     * This your function that you want fired then the do_action is executed.
     *
     * Example: If the plugin file has a function named osmosis_jones() and 
     * inside osmosis_jones(), there is a do_action() reference. Note down 
     * the do_action tag name inside the osmosis_jones() function.
     */
    add_action('the_plugin_do_action_tag_name', 'wpse_display_theme_header');
}

function wpse_display_theme_header(){
    echo 'THEME HEADER HERE!';
}
4
Michael Ecklund