如何获取页面上的参数并避免404?

时间:2014-01-06 作者:user44789

我有一个页面http://example.com/mypage

我想做一些$_GET 参数如下:

http://example.com/mypage/firstparameter/firstvalue
我需要firstparameter 但我总是以404 page.

我花了几个小时get_query_var(), add_query_vars_filter()add_rewrite_rule() 但不可能。。。

非常感谢。

2 个回复
SO网友:Shazzad

的连词add_rewrite_rule() &;add_rewrite_tag() 有点棘手,也许你可以parse_url 钩住对我有用的东西。下面的代码用于捕获多个参数=用斜杠分隔的值。代码-

add_filter( \'parse_request\', \'wpse128790_parse_request\' );

function wpse128790_parse_request( $wp )
{
    $pageslug = \'mypage\';

    if( isset($wp->request) && strpos($wp->request, \'/\') )
    {
        $requests = explode(\'/\', $wp->request);
        if( $pageslug == array_shift($requests) )
        {
            $wp->set_query_var(\'pagename\', $pageslug);
            $wp->set_query_var(\'attachment\', false );
            $wp->set_query_var(\'error\', false );

            $count = count( $requests );

            if( $count > 0 )
            {
                // stop the canonical redirection
                remove_action(\'template_redirect\', \'redirect_canonical\');

                foreach( $requests as $i => $request )
                {
                    // this should be the key, and next one will be the value
                    if( $i == 0 || $i % 2 == 0 )
                    {
                        if( isset($requests[$i+1]) )
                            $val = $requests[$i+1];
                        else
                            $val = \'\';

                        $wp->set_query_var( $request, $val );
                    }
                }
            }
        }
    }
}
但您可能会使用in\\u array或其他方法过滤参数,以确保包含在中是安全的wp query var

SO网友:kyle

可以直接设置URL字符串中的参数吗?类似于:

http://mydomain.com/mypage/?first_parameter=firstvalue&second_parameter=secondvalue
这将使他们可以通过\\u GET或\\u REQUEST调用访问。

您也可以使用。htaccess重写这些参数,尽管我必须查找语法。

结束

相关推荐

private functions in plugins

我开发了两个插件,其中一个功能相同(相同的名称,相同的功能)。当试图激活两个插件时,Wordpress会抛出一个错误,因为它不允许我以相同的名称定义函数两次。有没有一种方法可以使这个函数只对插件私有,而不使用面向对象编程,也不简单地重命名函数?我不想使用OOP,因为我首先要学习它。此外,我不想重命名该函数,因为我可能也想在其他插件中使用它,而重命名感觉不太合适。