如何使用ACF字段将自定义POST类型名称添加到查询POST数组

时间:2018-03-28 作者:Roshan Deshapriya

我正在通过更改cat id,有时更改帖子类型名称,将自定义帖子类型加载到不同的页面

query_posts(array(
 \'post_type\' => \'posttype_name\',\'posts_per_page\'=>-1,
  \'tax_query\' => array(
  array(
   \'taxonomy\' => \'type\',
    \'terms\' => cat_id    )// soups
     ))
  );
我想使用高级自定义字段更改“posttype\\u name”和“cat\\u id”,如下所示,以便我可以使用1个模板为不同的posttype生成更多页面。下面的方法不起作用,我还尝试给cf分配一个变量,并将该变量添加到数组中,没有结果。我可能做错了什么。

\'taxonomy\' => \'the_field(\'posttype_name\');\'
Soo far运气不好,有谁能分享一些如何实现这一点的想法吗

1 个回复
SO网友:Jacob Peattie

首先,不要使用query_posts()

应该注意的是,使用它来替换页面上的主查询可能会增加页面加载时间,在最坏的情况下,所需工作量会增加一倍或更多。虽然该函数易于使用,但以后也容易出现混淆和问题。有关详细信息,请参阅下面关于注意事项的注释。

https://developer.wordpress.org/reference/functions/query_posts/#more-information

其次,听起来你在这里采取了错误的方法。当你说:

因此,我可以为不同的帖子类型使用1个模板生成更多的页面。

您是否意识到WordPress会自动为帖子类型和分类归档创建页面?您只需要公开帖子类型和分类法。WordPress会根据用户的要求为这些页面选择合适的模板Template Hierarchy.

但是关于在查询参数中使用ACF字段(是否在query_posts()WP_Query), 问题有两个:

您需要使用返回值的函数,而不是将其输出到屏幕。查看的答案this Stack Overflow question 有关差异的更多信息

  • 您试图在字符串中使用函数(引号之间的文本\'\').
  • 因为高级自定义字段用于返回字段值的函数是get_field(), 您可以这样使用它:

    \'taxonomy\' => get_field( \'posttype_name\' ),
    
    密切关注\', ;, 和, 与您的尝试相比。

    结束