Как получить функцию для запуска внутри оператора if - PullRequest
0 голосов
/ 31 мая 2019

Я пытаюсь создать новый плагин WordPress и настроить страницу параметров, хотя у меня возникли некоторые проблемы, из-за которых выбор в раскрывающемся меню вызывает функцию.

Это функция, которую я вызываю на странице настроек.

Я пытаюсь сделать это, когда значение раскрывающегося меню установлено на «2», чтобы запустить функцию скрытия панели инструментов администратора.

При выводе $ wp_icon он показывает, что передается 1 или 2. Однако, когда выбрано 2, кажется, что он никогда не запускает функцию в операторе if, а вызывает любой другой код.

function my_plugins_options() {


    if (isset($_POST['wp_icon'])) { $wp_icon = $_POST['wp_icon']; update_option('wp_icon', $wp_icon); }
    $wp_icon = get_option('wp_icon');

    include 'page.php';

    if ($wp_icon == 2) {
        function remove_toolbar_nodes($wp_admin_bar) { $wp_admin_bar->remove_node('wp-logo'); }
        add_action('admin_bar_menu', 'remove_toolbar_nodes', 999);
    }   


}

page.php

<form method="POST">
    <label for="wp_icon">WordPress Icon</label>
    <select id="wp_icon" name="wp_icon">
        <option value="1" <?php selected( $wp_icon, 1 ); ?>>Show</option>
        <option value="2" <?php selected( $wp_icon, 2 ); ?>>Hide</option>
    </select>
    <input type="submit" value="Save" class="button button-primary button-large">
</form>

Ожидаемый результат заключается в том, что при установке параметра «Скрыть» он пропустит значение 2, а затем скроет значок WordPress на панели инструментов.

1 Ответ

0 голосов
/ 31 мая 2019

Вы создали функцию, но не вызывали ее - использовали.

Проверьте код ниже, если он работает, как ожидалось:

<?php

//function definition
function remove_toolbar_nodes($wp_admin_bar) 
{ 
    //just for debugiing - remove line below if success
    echo '<H1>remove_toolbar_nodes executed!</h1>'; 

    $wp_admin_bar->remove_node('wp-logo'); 
}

function my_plugins_options() {

    if (isset($_POST['wp_icon'])) { $wp_icon = $_POST['wp_icon']; update_option('wp_icon', $wp_icon); }
    $wp_icon = get_option('wp_icon');

    include 'page.php';

    if ($wp_icon == 2) {
        //function call - requires () after the name of function;
        remove_toolbar_nodes($wp_admin_bar);
        add_action('admin_bar_menu', 'remove_toolbar_nodes', 999);
    }   

}

вы должны увидеть отладку, напечатанную из функции:

узлы remove_toolbar_nodes выполнены!

, что вы можете удалить, конечно:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...