使用add_query_var在WordPress中构建自定义URL

时间:2019-02-25 15:27:31

标签: wordpress

在我的网站上生成网址时,add_query_args确实存在问题。我确实有一个产品详细信息页面,其中包含一些帖子信息。我创建了一些高级自定义字段(ACF),以区分该产品的某些类型。类型是ACF中的一个转发器字段,因此我可以向一个产品添加更多类型。

因此,我首先显示该帖子中的常用信息,然后循环显示那些ACF类型字段:

[产品]

  • 类型1(更多信息)
  • 类型2(更多信息)
  • 类型3(更多信息)

我还创建了一个带有以下内容的空帖子/页面:more_info_page和一个模板,在该模板上,我将显示该类型的该帖子的所有详细信息。

(更多信息)应指向具有帖子ID和ACF类型编号的页面。在循环中,我有一个索引,所以这里有数字。有了这个号码,我可以从ACF字段中获取信息(希望如此)。

据我目前的了解,我可以创建一个如下网址:

$mylink = esc_url( 
    add_query_arg( array (

        'post_id' => $post->ID, 
        'type'    => $type_idx,

    ), site_url( '/more_info_page/' ) 
));

<a href="<?php echo $mylink; ?>">more info</a>

我确实确实获得了以下链接:

/more_info_page/?post_id=300&type=0

/more_info_page/?post_id=300&type=1

/more_info_page/?post_id=300&type=2

链接在那里,第一个确实打开了正确的模板页面,在其中我可以看到查询变量。但是...其他链接没有链接到正确的页面。该URL与第一个URL相同,只是类型号不同。但它不会像第一个链接那样显示/加载我的/ more_info_page。

我不知道出了什么问题。我对add_query_arg的使用是否错误?

1 个答案:

答案 0 :(得分:0)

我必须将vars包含在functions.php中,如下所示:

// Add custom query vars
add_filter( 'query_vars', 'my_query_vars', 10, 1 );

function my_query_vars($vars) {
    $vars[] = 'type';

    return $vars;
} 

在我的情况下,该名称也不是唯一的,所以我也不得不更改名称。