Custom Path for a Plugin

时间:2011-01-27 作者:choise

我开发了一个插件(至少是后端),现在我想在我的博客中添加一个frontpage。url应该如下所示

http://www.mywordpressblogalsoroot.com/mypluginname/param1/param2
http://www.mywordpressblogalsoroot.com/mypluginname/param1/
http://www.mywordpressblogalsoroot.com/mypluginname/
我不知道,这三个URL都应该指向插件函数或带有循环的php站点。参数应该是可读的,我想get_query_var

我玩了一下以下游戏:

add_filter(\'rewrite_rules_array\',\'gamecard_insertMyRewriteRules\');
// Adding a new rule
function gamecard_insertMyRewriteRules($rules) {
    $newrules = array();
    $newrules[\'(gamecard)/(\\d*)$\'] = \'index.php?pagename=$matches[1]&gamecardslug=$matches[2]\';
    return $newrules + $rules;
}

// Adding the id var so that WP recognizes it
function gamecard_insertMyRewriteQueryVars($vars)
{
    array_push($vars, \'gamecardslug\');
    return $vars;
}
有些事情发生了,但我卡住了一点。

有人能给我一个指针,告诉我如何完成这一切吗?

谢谢

1 个回复
SO网友:Bainternet

这个很棘手。

function my_plugin_query_vars($vars) {
    // add mypluginname to the valid list of variables
    $new_vars = array(\'mypluginname\');
    $vars = $new_vars + $vars;
    return $vars;
}
add_filter(\'query_vars\', \'my_plugin_query_vars\');
这将告诉WordPress接受名为mypluginname的GET变量。现在您可以处理如下请求

http://www.example.com?mypluginname=param1

我们在parse\\u请求上添加了一个操作,这使我们在WordPress之前第一次更改对给定请求的解析。

function my_plugin_parse_request($wp) {
    // only process requests with "mypluginname=param1"
    if (array_key_exists(\'mypluginname\', $wp->query_vars) 
            && $wp->query_vars[\'mypluginname\'] == \'param1\') {
        my_plugin_custom_function($wp);
    }
}
add_action(\'parse_request\', \'my_plugin_parse_request\');
然后我们需要在WordPress重写系统中添加一个钩子,然后创建一个规则,告诉WordPress将所有请求转发到

http://example.com/mypluginname/param1

http://www.example.com?mypluginname=param1

使用此代码

add_action(\'generate_rewrite_rules\', \'my_plugin_rewrite_rules\');

function my_plugin_rewrite_rules( $wp_rewrite ) {
  $new_rules = array(\'mypluginname/param1\' => \'index.php?mypluginname=param1\');
  $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
这应该会让你继续:)所以我希望这会有所帮助。

结束

相关推荐