从自定义WordPress插件页面创建动态页面内容

时间:2016-05-17 作者:Émilie Robert

我想从一个插件中创建一个自定义Wordpress页面,该插件显示的内容不是来自Wordpress,它有2个get参数,并对其应用重写规则。

假设我有一个名为test的文件。php。我希望使用2个get参数来使用URL显示内容:

实例com/param1/param2/

我在插件方面很好(管理等…)但对自定义页面没有任何线索。目前,我的测试中有这个代码。php文件,但我真的不确定这样做是否正确:

include(\'../../../wp-load.php\');
include(\'myplugin.php\');

global $myclass, $wpdb;

echo $myclass->get_setting(\'test\');
或者我需要检查URL中传递的查询变量参数并相应地修改内容吗?

我尝试了一些stackoverflow答案,但没有成功,所以如果你能给我一些提示的话。提前非常感谢。

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

为此创建一个页面,您可以稍后过滤其内容,除非您以其他方式工作。

将页面ID添加到重写规则初始化函数:

add_action(\'init\', function() {

    $page = get_post( 2 ); // replace 2 with page ID

    add_rewrite_rule(
        \'([^/]+)/([^/]+)/?$\',
        \'index.php?pagename=\' . $page->post_name . \'&my_param_1=$matches[1]&my_param_2=$matches[2]\',
        \'top\'
    );

});
将查询变量附加到主查询:

add_filter(\'query_vars\', function($vars) {
    $vars[] = "my_param_1";
    $vars[] = "my_param_2";
    return $vars;
});
现在应该完成了,您需要使用以下两种方法刷新重写规则flush_rewrite_rules() 连接到initwp, 或者转到“设置”>“永久链接”,然后单击底部的“保存”按钮。

现在进行测试>http://example.com/john/smith/ :

// first param
echo var_dump( get_query_var( \'my_param_1\' ) ); // john

// second param
echo var_dump( get_query_var( \'my_param_2\' ) ); // smith
我希望你能像我在本地安装时那样工作。

编辑:如果您将参数设置在页面名称之后,如$page->post_name . \'/([^/]+)/([^/]+)/?$\' 所以你得到/sample-page/john/smith/ 这样,您就不会对现有内容产生任何冲突,WordPress将在传递到插件之前首先为现有内容提供服务,或者在第一个参数slug之前添加一个唯一的前缀。我只是这么想。