Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Wordpress 4.0使用永久链接发送url变量_Php_Wordpress_Variables_Url_Permalinks - Fatal编程技术网

Php Wordpress 4.0使用永久链接发送url变量

Php Wordpress 4.0使用永久链接发送url变量,php,wordpress,variables,url,permalinks,Php,Wordpress,Variables,Url,Permalinks,我试图在url中发送一个变量。由于我激活了永久链接,我正在尝试添加一个重写规则,正如我在这里读到的一篇文章中所说的 什么都没用。这是我在functions.php上的代码 add_filter('rewrite_rules_array','wp_insertMyRewriteRules'); add_filter('query_vars','wp_insertMyRewriteQueryVars'); add_filter('init','flushRules'); // Remember t

我试图在url中发送一个变量。由于我激活了永久链接,我正在尝试添加一个重写规则,正如我在这里读到的一篇文章中所说的

什么都没用。这是我在functions.php上的代码

add_filter('rewrite_rules_array','wp_insertMyRewriteRules');
add_filter('query_vars','wp_insertMyRewriteQueryVars');
add_filter('init','flushRules');

// Remember to flush_rules() when adding rules
function flushRules(){
    global $wp_rewrite;
    $wp_rewrite->flush_rules();
}

// Adding a new rule
function wp_insertMyRewriteRules($rules)
{
    $newrules = array();
    $newrules['view-article/(.+)'] = 'index.php?pagename=view-article&aid=$matches[1]';
    $finalrules = $newrules + $rules;
        return $finalrules;
}

// Adding the var so that WP recognizes it
function wp_insertMyRewriteQueryVars($vars)
{
    array_push($vars, 'aid');
    return $vars;
}

//Stop wordpress from redirecting
remove_filter('template_redirect', 'redirect_canonical');
这是获取变量的调用

$aid = urldecode($wp_query->query_vars['aid']);
我做错了什么(
我的wordpress版本是4.0(最新版本)

请尝试以下代码:

add_action('init', 'flush_urls');

function flush_urls()
{
    // Execute flush_rules() on every request can
    // slow down your entire website
    if('clean' !== get_option('flush_urls', ''))
    {
        flush_rewrite_rules();
        add_option('flush_urls', 'clean');
    }
}

add_action('init', 'register_rewrite_rules',    0);

function register_rewrite_rules()
{
    add_rewrite_tag('%aid%',         '([^/]+)');

    add_rewrite_rule(
        "view-article/([^/]+)/?",
        'index.php?pagename=view-article&aid=$matches[1]',
        "top"
    );
}
最后,在
模板重定向
或任何后续操作/挂钩中,您应该执行以下操作:

global $wp_query;

echo $wp_query->query_vars['pagename'];
echo $wp_query->query_vars['aid'];

如果您在$wp_查询中看不到这些变量,请尝试在WordPress仪表板中再次保存永久链接。这将清除URL缓存。

您想做什么…例如,示例URL和最终结果是什么?我正在尝试访问“misyte.com/view article/23”在该页面中,从另一个数据库创建一个dinamic视图,这就是为什么我需要获取查询的名称和ID。但一切都很好,现在我可以检查第一个变量“pagename”,但我还无法检索第二个变量。。在url“misyte.com/view article/23”上,我可以将view article打印为pagename,但不能将23打印为aid。请尝试将语句index.php?pagename=view article&aid=$matches[1]的双引号改为单引号,当然,如果您对此修改感到满意,请上传我的答案并核对是否正确:)它工作正常,谢谢!我假设在规则中添加语句可以发送更多变量。当然,您可以添加任意数量的变量。请别忘了也投票支持我的答案!!;)