Крючок пользовательского действия плагина не работает


Я пытаюсь создать один базовый плагин, в котором я хочу создать свой собственный крюк действий. Вот код для того же самого.

<?php
/*
Plugin Name: Demo Plugin
Version: 1.0
*/

do_action('basic_action_demo');
?>

Теперь, после активации этого плагина, я хочу использовать этот крючок действия в моей текущей теме function.php файл, код для того же, что и ниже:

add_action('basic_action_demo','action_demo');

function action_demo()
{
    echo "I am inside";
}

Теперь проблема в том, что мое подключенное действие никогда не вызывается, мы видим, что do_action вызывается безоговорочно, поэтому оно будет вызываться при каждой загрузке страницы, но оно никогда не попадает в "action_demo" метод.

Что я понял, так это то, что плагин загружается до моей темы. function.php файл выполнен. Итак, здесь сначала вызывается do_action, а затем add_action.

Намек был бы очень признателен.

Обновление:

Ниже работает действие плагина.

<?php
/*
Plugin Name: Demo Plugin
Version: 1.0
*/

add_action('basic_action_demo','action_demo');
do_action('basic_action_demo');

function action_demo()
{
    echo "I am Inside";
    die;
}
?>
Author: Avinash, 2013-11-25

1 answers

Вашему плагину необходимо дождаться загрузки файла тем functions.php. Попробуйте это:

<?php
/*
Plugin Name: Demo Plugin
Version: 1.0
*/

add_action( 'after_setup_theme', function() {
    do_action( 'basic_action_demo' );
} );
?>

Крючок after_setup_theme запускается сразу после загрузки functions.php.

Обновите свой комментарий ниже. В своем плагине создайте функцию для своей формы:

<?php
/*
Plugin Name: Demo Plugin
Version: 1.0
*/

function output_my_form () {
    echo "I'm a form";
    // do your action here
    do_action( 'basic_action_demo' );
}
?>

Затем в вашей теме functions.php:

if ( function_exists( 'output_my_form' ) ) {
    output_my_form();
}

Это простой пример. На самом деле вы хотели бы вызвать эту функцию из form.php в вашей теме.

 6
Author: Twifty, 2017-10-17 18:36:52