在管理员设置页面中发布插件命令

时间:2013-03-15 作者:Steve

在wp admin中发出命令的正确方式是什么?我的插件通过cron作业从一组RSS提要导入数据。这一切都很好。我已经设置了一个自定义设置页面来更改参数,并希望添加一个“立即更新”按钮,以便用户可以强制手动刷新。我还需要一些其他命令。

添加和处理这些命令的“wordpress方式”是什么?

我尝试添加urlhttp://example.com/wp-admin/options-general.php?page=myplugin&action=update 转到选项页,然后

if (isset($_REQUEST[\'action\']) && $_REQUEST[\'action\'] == \'update\') { doUpdate(); }
但我得到一个错误,显示$wp尚未初始化。我试着包括wp负载。php和wp设置。php,但它没有帮助。

错误消息为Fatal error: Call to a member function add_rewrite_tag() on a non-object in /wordpress/wp-includes/rewrite.php on line 51

导致doUpdate()中出现问题的行有

    if (taxonomy_exists($name)) {
        return;
    }

    $slug  = str_replace(\' \', \'_\', $title);
    register_taxonomy(
        $name,
        \'\',
        array(
             \'labels\'            => array( \'name\' => __(ucwords($title)) ),
             \'public\'            => true,
             \'show_ui\'           => self::SHOW_UI,
             \'show_in_nav_menus\' => true,
             \'show_admin_column\' => true,
             \'hierarchical\'      => false,
             \'query_var\'         => $slug,
             \'rewrite\'           => array( \'slug\' => __($slug) ),
        )
    );
我做错了什么?如何允许用户从管理设置窗格执行操作?

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

始终等待initwp_loaded, 所以您知道所有需要的函数和类都是可用的。

add_action( \'wp_loaded\', \'plugin_prefix_start\' );

function plugin_prefix_start()
{
    if (isset($_REQUEST[\'action\']) && $_REQUEST[\'action\'] == \'update\') 
    { 
        doUpdate(); 
    }
}

结束