如何让函数在if语句中运行

时间:2019-05-30 21:07:29

标签: php wordpress

我正尝试创建一个新的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 :(得分:0)

您创建了一个函数,但尚未调用它-已使用。

检查下面的代码是否按预期工作:

<?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已执行!

您当然可以删除:)