如何为一个自定义分类使用多个术语的高级分类查询传递URL参数

时间:2011-08-15 作者:marfarma

This answer 提供查询的代码,该查询返回分类术语的OR匹配:

global $query_string;
$args[\'tax_query\'] = array(
    array(
         \'taxonomy\' => \'status\'
        ,\'terms\'    => array( \'available\', \'pending\' ) // change to "sold" for 2nd query
        ,\'field\'    => \'slug\'
    ),
);
我想让我的分类模板从URL中检索数组(,\'terms\'=>数组(\'available\',\'pending\')的术语值,与单个术语的值相同。

重点是允许分类术语随时间变化,而不必为特定的兴趣组合硬编码页面模板,因此,如果有更好的方法,请提出建议。

幸亏this post 我将永久链接映射到模板文件,如下所示:

example.com/cptslugs                maps to my archive-cptname.php template. 
example.com/cptslug/cpt-post        maps to my single-cptname.php template. 
example.com/cptslugs/ctxslug/term   maps to my taxonomy-ctxname.php template. 
我想要一些类似于:

实例com/cptslugs/ctxslug/term1/term2/

映射到我的分类法ctxname。php模板,以便get\\u query\\u var(\'term\')从url返回一个术语数组(term1,term2)。

但如果我能

实例com/cptslugs/ctxslug/?术语=术语1,术语2

映射到我的分类法ctxname。php模板,使get\\u query\\u var(\'term\')可以通过重写规则和过滤器从url返回一个术语数组(term1,term2),也可以。

但不管是哪种方式,其想法都是模板文件应该工作,无论它是传递一个术语还是传递一组术语。

UPDATE

好的-@scribu to the rescue! -- 大概一直在寻找,这就是我发现的。我想我已经把一切都弄清楚了,但我没法让它发挥作用。

?tax1=term1,term2&tax2=term2+term3
映射到:

query_posts( array(
  \'tax1\' => \'term1,term2\',
  \'tax2\' => \'term3+term4\'
) );
进一步映射到:

query_posts( array(
  \'tax_query\' => array(
    array(
      \'taxonomy\' => \'tax1\',
      \'field\' => \'slug\',
      \'terms\' => array(\'term1\', \'term2\'),
      \'operator\' => \'OR\'
    ),
    array(
      \'taxonomy\' => \'tax2\',
      \'field\' => \'slug\',
      \'terms\' => array(\'term3\', \'term4\'),
      \'operator\' => \'AND\'
    ),
) );
实例com/?ctxname=term1,term2

呈现首页模板。Revision: it renders taxonomy-ctxname.php when you spell ctxname correctly. Imaging that!

实例com/?cptslug/ctxslug=term1,term2

(分类法是用cptslug/ctxslug的slug注册的)也会呈现首页模板。

实例com/cptslug/?ctxslug=term1+term2

呈现存档ctpname。php模板。

如何获取呈现分类法ctxname的URL。php或分类法。php模板?

然后,一旦我记下来,对漂亮URL的建议是受欢迎的,但不是绝对必要的。

UPDATE TWO

example.com/?ctxname=term1,term2

example.com/ctpslugs/ctxslug/term1,term2/
两者都呈现分类法ctxname。php。详情见我的答案,张贴在下面。

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

添加后

 print_r($wp_query); 
到我的模板并检查结果,我发现了有效的URL格式。在我的问题中,我写道,如果正确拼写自定义分类法名称,以下格式不起作用——事实上,它起作用了。

example.com/?ctxname=term1+term2
只有在以下情况下才能识别带有“+”和“,”运算符(分别表示and和OR)的漂亮URLnot URL编码。

example.com/cptslugs/ctxslug/term1,term2/ 
生成以下WP\\u Tax\\u查询对象

[tax_query] => WP_Tax_Query Object
      (
          [queries] => Array
              (
                  [0] => Array
                      (
                          [taxonomy] => announcements_cats
                          [terms] => Array
                              (
                                  [0] => term1
                                  [1] => term2
                              )

                          [include_children] => 1
                          [field] => slug
                          [operator] => IN
                      )

                  [1] => Array
                      (
                          [taxonomy] => category
                          [terms] => Array
                              (
                                  [0] => 1
                              )

                          [include_children] => 
                          [field] => term_id
                          [operator] => NOT IN
                      )

              )

          [relation] => AND
      )
虽然

example.com/cptslugs/ctxslug/term1+term2/
生成以下WP\\u Tax\\u查询对象

[tax_query] => WP_Tax_Query Object
      (
          [queries] => Array
              (
                  [0] => Array
                      (
                          [taxonomy] => ctxname
                          [terms] => Array
                              (
                                  [0] => term1
                              )

                          [include_children] => 1
                          [field] => slug
                          [operator] => IN
                      )

                  [1] => Array
                      (
                          [taxonomy] => ctxname
                          [terms] => Array
                              (
                                  [0] => term2
                              )

                          [include_children] => 1
                          [field] => slug
                          [operator] => IN
                      )

                  [2] => Array
                      (
                          [taxonomy] => category
                          [terms] => Array
                              (
                                  [0] => 1
                              )

                          [include_children] => 
                          [field] => term_id
                          [operator] => NOT IN
                      )

              )

          [relation] => AND
      )
P、 S.:根据to this: “+”和“,”是“保留字符”,可以在URI的路径、参数和片段中使用,但不能出现在URI的其他部分中。我想毕竟没关系。不过,似乎有点“不对”。

结束

相关推荐

Enable page templates. How?

基本问题,但我想启用页面模板。我有一个启用了页面模板的主题。我切换到了另一个模板,但没有更改模板的选项,即使在创建新页面时也是如此。如何打开此选项?我在抄本和论坛上找到了根,但找不到。

如何为一个自定义分类使用多个术语的高级分类查询传递URL参数 - 小码农CODE - 行之有效找到问题解决它

如何为一个自定义分类使用多个术语的高级分类查询传递URL参数

时间:2011-08-15 作者:marfarma

This answer 提供查询的代码,该查询返回分类术语的OR匹配:

global $query_string;
$args[\'tax_query\'] = array(
    array(
         \'taxonomy\' => \'status\'
        ,\'terms\'    => array( \'available\', \'pending\' ) // change to "sold" for 2nd query
        ,\'field\'    => \'slug\'
    ),
);
我想让我的分类模板从URL中检索数组(,\'terms\'=>数组(\'available\',\'pending\')的术语值,与单个术语的值相同。

重点是允许分类术语随时间变化,而不必为特定的兴趣组合硬编码页面模板,因此,如果有更好的方法,请提出建议。

幸亏this post 我将永久链接映射到模板文件,如下所示:

example.com/cptslugs                maps to my archive-cptname.php template. 
example.com/cptslug/cpt-post        maps to my single-cptname.php template. 
example.com/cptslugs/ctxslug/term   maps to my taxonomy-ctxname.php template. 
我想要一些类似于:

实例com/cptslugs/ctxslug/term1/term2/

映射到我的分类法ctxname。php模板,以便get\\u query\\u var(\'term\')从url返回一个术语数组(term1,term2)。

但如果我能

实例com/cptslugs/ctxslug/?术语=术语1,术语2

映射到我的分类法ctxname。php模板,使get\\u query\\u var(\'term\')可以通过重写规则和过滤器从url返回一个术语数组(term1,term2),也可以。

但不管是哪种方式,其想法都是模板文件应该工作,无论它是传递一个术语还是传递一组术语。

UPDATE

好的-@scribu to the rescue! -- 大概一直在寻找,这就是我发现的。我想我已经把一切都弄清楚了,但我没法让它发挥作用。

?tax1=term1,term2&tax2=term2+term3
映射到:

query_posts( array(
  \'tax1\' => \'term1,term2\',
  \'tax2\' => \'term3+term4\'
) );
进一步映射到:

query_posts( array(
  \'tax_query\' => array(
    array(
      \'taxonomy\' => \'tax1\',
      \'field\' => \'slug\',
      \'terms\' => array(\'term1\', \'term2\'),
      \'operator\' => \'OR\'
    ),
    array(
      \'taxonomy\' => \'tax2\',
      \'field\' => \'slug\',
      \'terms\' => array(\'term3\', \'term4\'),
      \'operator\' => \'AND\'
    ),
) );
实例com/?ctxname=term1,term2

呈现首页模板。Revision: it renders taxonomy-ctxname.php when you spell ctxname correctly. Imaging that!

实例com/?cptslug/ctxslug=term1,term2

(分类法是用cptslug/ctxslug的slug注册的)也会呈现首页模板。

实例com/cptslug/?ctxslug=term1+term2

呈现存档ctpname。php模板。

如何获取呈现分类法ctxname的URL。php或分类法。php模板?

然后,一旦我记下来,对漂亮URL的建议是受欢迎的,但不是绝对必要的。

UPDATE TWO

example.com/?ctxname=term1,term2

example.com/ctpslugs/ctxslug/term1,term2/
两者都呈现分类法ctxname。php。详情见我的答案,张贴在下面。

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

添加后

 print_r($wp_query); 
到我的模板并检查结果,我发现了有效的URL格式。在我的问题中,我写道,如果正确拼写自定义分类法名称,以下格式不起作用——事实上,它起作用了。

example.com/?ctxname=term1+term2
只有在以下情况下才能识别带有“+”和“,”运算符(分别表示and和OR)的漂亮URLnot URL编码。

example.com/cptslugs/ctxslug/term1,term2/ 
生成以下WP\\u Tax\\u查询对象

[tax_query] => WP_Tax_Query Object
      (
          [queries] => Array
              (
                  [0] => Array
                      (
                          [taxonomy] => announcements_cats
                          [terms] => Array
                              (
                                  [0] => term1
                                  [1] => term2
                              )

                          [include_children] => 1
                          [field] => slug
                          [operator] => IN
                      )

                  [1] => Array
                      (
                          [taxonomy] => category
                          [terms] => Array
                              (
                                  [0] => 1
                              )

                          [include_children] => 
                          [field] => term_id
                          [operator] => NOT IN
                      )

              )

          [relation] => AND
      )
虽然

example.com/cptslugs/ctxslug/term1+term2/
生成以下WP\\u Tax\\u查询对象

[tax_query] => WP_Tax_Query Object
      (
          [queries] => Array
              (
                  [0] => Array
                      (
                          [taxonomy] => ctxname
                          [terms] => Array
                              (
                                  [0] => term1
                              )

                          [include_children] => 1
                          [field] => slug
                          [operator] => IN
                      )

                  [1] => Array
                      (
                          [taxonomy] => ctxname
                          [terms] => Array
                              (
                                  [0] => term2
                              )

                          [include_children] => 1
                          [field] => slug
                          [operator] => IN
                      )

                  [2] => Array
                      (
                          [taxonomy] => category
                          [terms] => Array
                              (
                                  [0] => 1
                              )

                          [include_children] => 
                          [field] => term_id
                          [operator] => NOT IN
                      )

              )

          [relation] => AND
      )
P、 S.:根据to this: “+”和“,”是“保留字符”,可以在URI的路径、参数和片段中使用,但不能出现在URI的其他部分中。我想毕竟没关系。不过,似乎有点“不对”。

相关推荐

Custom templates vs page-slug

我目前一直在使用slug来设置页面模板,使用普通的层次结构例如,如果我想更改的页面模板http://www.example.com/about-us, 我会编辑关于我们的页面。php如果客户端要去更改页面slug,它将不再加载正确的模板。在WordPress后端使用“自定义模板”下拉列表是否更好?就这一点而言,最佳做法是什么?非常感谢

如何为一个自定义分类使用多个术语的高级分类查询传递URL参数 - 小码农CODE - 行之有效找到问题解决它

如何为一个自定义分类使用多个术语的高级分类查询传递URL参数

时间:2011-08-15 作者:marfarma

This answer 提供查询的代码,该查询返回分类术语的OR匹配:

global $query_string;
$args[\'tax_query\'] = array(
    array(
         \'taxonomy\' => \'status\'
        ,\'terms\'    => array( \'available\', \'pending\' ) // change to "sold" for 2nd query
        ,\'field\'    => \'slug\'
    ),
);
我想让我的分类模板从URL中检索数组(,\'terms\'=>数组(\'available\',\'pending\')的术语值,与单个术语的值相同。

重点是允许分类术语随时间变化,而不必为特定的兴趣组合硬编码页面模板,因此,如果有更好的方法,请提出建议。

幸亏this post 我将永久链接映射到模板文件,如下所示:

example.com/cptslugs                maps to my archive-cptname.php template. 
example.com/cptslug/cpt-post        maps to my single-cptname.php template. 
example.com/cptslugs/ctxslug/term   maps to my taxonomy-ctxname.php template. 
我想要一些类似于:

实例com/cptslugs/ctxslug/term1/term2/

映射到我的分类法ctxname。php模板,以便get\\u query\\u var(\'term\')从url返回一个术语数组(term1,term2)。

但如果我能

实例com/cptslugs/ctxslug/?术语=术语1,术语2

映射到我的分类法ctxname。php模板,使get\\u query\\u var(\'term\')可以通过重写规则和过滤器从url返回一个术语数组(term1,term2),也可以。

但不管是哪种方式,其想法都是模板文件应该工作,无论它是传递一个术语还是传递一组术语。

UPDATE

好的-@scribu to the rescue! -- 大概一直在寻找,这就是我发现的。我想我已经把一切都弄清楚了,但我没法让它发挥作用。

?tax1=term1,term2&tax2=term2+term3
映射到:

query_posts( array(
  \'tax1\' => \'term1,term2\',
  \'tax2\' => \'term3+term4\'
) );
进一步映射到:

query_posts( array(
  \'tax_query\' => array(
    array(
      \'taxonomy\' => \'tax1\',
      \'field\' => \'slug\',
      \'terms\' => array(\'term1\', \'term2\'),
      \'operator\' => \'OR\'
    ),
    array(
      \'taxonomy\' => \'tax2\',
      \'field\' => \'slug\',
      \'terms\' => array(\'term3\', \'term4\'),
      \'operator\' => \'AND\'
    ),
) );
实例com/?ctxname=term1,term2

呈现首页模板。Revision: it renders taxonomy-ctxname.php when you spell ctxname correctly. Imaging that!

实例com/?cptslug/ctxslug=term1,term2

(分类法是用cptslug/ctxslug的slug注册的)也会呈现首页模板。

实例com/cptslug/?ctxslug=term1+term2

呈现存档ctpname。php模板。

如何获取呈现分类法ctxname的URL。php或分类法。php模板?

然后,一旦我记下来,对漂亮URL的建议是受欢迎的,但不是绝对必要的。

UPDATE TWO

example.com/?ctxname=term1,term2

example.com/ctpslugs/ctxslug/term1,term2/
两者都呈现分类法ctxname。php。详情见我的答案,张贴在下面。

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

添加后

 print_r($wp_query); 
到我的模板并检查结果,我发现了有效的URL格式。在我的问题中,我写道,如果正确拼写自定义分类法名称,以下格式不起作用——事实上,它起作用了。

example.com/?ctxname=term1+term2
只有在以下情况下才能识别带有“+”和“,”运算符(分别表示and和OR)的漂亮URLnot URL编码。

example.com/cptslugs/ctxslug/term1,term2/ 
生成以下WP\\u Tax\\u查询对象

[tax_query] => WP_Tax_Query Object
      (
          [queries] => Array
              (
                  [0] => Array
                      (
                          [taxonomy] => announcements_cats
                          [terms] => Array
                              (
                                  [0] => term1
                                  [1] => term2
                              )

                          [include_children] => 1
                          [field] => slug
                          [operator] => IN
                      )

                  [1] => Array
                      (
                          [taxonomy] => category
                          [terms] => Array
                              (
                                  [0] => 1
                              )

                          [include_children] => 
                          [field] => term_id
                          [operator] => NOT IN
                      )

              )

          [relation] => AND
      )
虽然

example.com/cptslugs/ctxslug/term1+term2/
生成以下WP\\u Tax\\u查询对象

[tax_query] => WP_Tax_Query Object
      (
          [queries] => Array
              (
                  [0] => Array
                      (
                          [taxonomy] => ctxname
                          [terms] => Array
                              (
                                  [0] => term1
                              )

                          [include_children] => 1
                          [field] => slug
                          [operator] => IN
                      )

                  [1] => Array
                      (
                          [taxonomy] => ctxname
                          [terms] => Array
                              (
                                  [0] => term2
                              )

                          [include_children] => 1
                          [field] => slug
                          [operator] => IN
                      )

                  [2] => Array
                      (
                          [taxonomy] => category
                          [terms] => Array
                              (
                                  [0] => 1
                              )

                          [include_children] => 
                          [field] => term_id
                          [operator] => NOT IN
                      )

              )

          [relation] => AND
      )
P、 S.:根据to this: “+”和“,”是“保留字符”,可以在URI的路径、参数和片段中使用,但不能出现在URI的其他部分中。我想毕竟没关系。不过,似乎有点“不对”。

相关推荐

Updating modified templates

我想调整一些。php模板文件在我的WordPress主题中,我知道正确的过程是将相关文件复制到子主题文件夹中并在那里编辑文件,这样我的修改就不会在将来的主题更新中丢失。但这是否意味着我将无法从主题更新中获益,因为我将文件放在了我的子主题文件夹中?这可能不是一件好事,因为主题更新可能添加了一些有用的特性,甚至修复了我最初需要对代码进行调整的问题!这方面的常见解决方案是什么?有人推荐了一款Diff应用程序——这是人们常用的吗?