我用过ACF。我已将“分类法”选择下拉字段添加到后期编辑页面。从下拉列表中,我选择了这篇文章应该出现在哪个类别中,但我的代码显示的是所有类别中的同一篇文章。
下面是类别中的代码。php文件。我需要它来显示最近的帖子,它已经被赋予了“类别中的功能”,因此,在我定义的类别中的功能。
我category.php的当前循环
<?php
$category = get_field('feature_in_category');
// args
$args = array(
'numberposts' => -1,
'posts_per_page' => 1,
'category__in' => $category,
'orderby'=> 'modified'
);
// get results
$the_query = new WP_Query( $args );
// The Loop
?>
<?php if( $the_query->have_posts() ): ?>
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<div class="small-6 columns">
<div class="img-box-shadow">
<a href="<?php the_permalink(); ?>">
<?php echo the_post_thumbnail(); ?>
</a>
</div>
</div>
<div class="small-6 columns">
<h3><a href="<?php the_permalink(); ?>"><?php echo the_title(); ?></a></h3>
<p><?php echo the_excerpt(); ?></p>
</div>
<?php endwhile; ?>
<?php else : echo '<p style="color:#fff;">no posts</p>'; ?>
<?php endif; ?>
<?php wp_reset_query(); // Restore global post data stomped by the_post(). ?>
Pastebin:http://pastebin.com/NR3UanAd
在查看此处的文档之后http://codex.wordpress.org/Class_Reference/WP_Query您的代码似乎做了所有正确的事情。我相信您的答案取决于用于生成结果的实际查询字符串。通过执行以下操作,您应该能够在查询对象的属性中看到该查询字符串:
<?php
$category = get_field('feature_in_category');
// args
$args = array(
'numberposts' => -1,
'posts_per_page' => 1,
'category__in' => $category,
'orderby'=> 'modified'
);
// get results
$the_query = new WP_Query( $args );
echo '<pre>'; print_r($the_query); die();
我建议在直接在数据库上看到查询字符串后,使用phpMyAdmin或Navicat之类的工具直接连接到数据库。您应该能够在那里调整查询以生成所需的结果,然后相应地调整参数。也可能是您的查询没有问题,问题在于类别功能。如果是这样的话,这种调试方法也应该揭示这一点。
更新:我认为你只需要使用“cat”而不是“category”。另外,确保在调用中使用为字段名设置的内容来获取_字段。此反馈基于以下示例:http://www.the-perfect-life.org/html-5-css-3-php-wordpress-jquery-javascript-photoshop-illustrator-tutorial/how-to-create-custom/wordpress-plugin-theme-codex-code-function/advanced-custom-fields-get-field-taxonomy-query-related-posts-by-tag-and-category/
$categoryValue = get_field('feature_in_category');
$args=array(
'cat' => $categoryValue,
'posts_per_page'=>1 // Number of related posts to display
);
$my_query = new wp_query( $args );
while( $my_query->have_posts() ) {
$my_query->the_post();
?>
<div>
<a href="<? the_permalink()?>">
<?php the_title(); ?>
</a>
</div>
wp_reset_query();
我对ACF不是很熟悉,还没有使用过。我看了一些留档等,这是我发现的:
ACF分类字段将在您的应用程序中返回NULL
,因为传递给get\u字段的ID是类别ID,这是无效的post ID。是的,您可以将类别ID传递给
get\u字段
,但是,为了返回该自定义字段的值,必须为该特定类别指定一个自定义字段。
看看ACF文档
$field = get_field($field_name, $post_id, $format_value);
◦$post_id:输入值的特定post id。默认为当前职位ID(非必需)。这也可以是选项/分类法/用户等
如前所述,我不熟悉ACF,但ACF字段数据的存储方式似乎与默认自定义字段存储数据的方式相同。所以你会有一对匹配的
key=
“ACF分类法”下拉列表保存转换为类别的选定值。同样,我不确定它是否保存了名称、slug或ID,但从我能得到的信息来看,它保存了category ID,因此我将对此做出假设
所以,这里要做的第一件事是,获取当前查看的类别的ID。可以通过
get_queried_object_id()
检索
现在您有了当前的类别ID,您需要将其与特定的
meta_key=feature_in_category
的值相匹配,并返回具有此特定键=的帖子
假设ACF数据的存储方式与从自定义字段存储数据的存储方式相同(此代码需要PHP5.4,对于早期版本,请将
[]
更改为array()
)
$cat_id = get_queried_object_id(); // Assumption that category ID is saved by ACF
$args = [
'posts_per_page' => 1,
'orderby' => 'modified',
'meta_key' => 'feature_in_category',
'meta_value_num' => $cat_id, // Assumption that category ID is saved by ACF
];
$q = new WP_Query( $args );
if( $q->have_posts() ) {
while( $q->have_posts() ) {
$q->the_post();
// YOUR TEMPLATE TAGS AND MARKUP
}
wp_reset_postdata();
}
如果类别ID未由ACF字段保存,并且它保存了名称或slug,则可以按如下方式更改代码
$category = get_queried_object()->name; // For category name
或
$category = get_queried_object()->slug; // For category slug
然后在查询参数中,更改
'meta_value_num' => $cat_id, // Assumption that category ID is saved by ACF
到
'meta_value' => $category,
编辑
除此之外,作为评论发布,OP使用的查询结果有效。
$cat_id = get_queried_object_id();
$args = [
'posts_per_page' => 1,
'orderby' => 'modified',
'meta_query' => [
[
'key' => 'feature_in_category',
'value' => $cat_id,
'compare' => 'IN'
]
]
];
我有一张分类表 我有文章表如下 和我的用户表作为 因此与这些数据我想显示所有的文章这是列在子类别 例如: 主要类别的url是:mydomain。子类别的com/cat/business url为:mydomian。com/cat/商业/广告 因此,当人们访问主类别时,它应该显示主类别上列出的文章的子类别,即使cat_id未被提及为主类别。我想在“业务类别”页面上列出业务子类别文章的所有子类别。 有
我试图在侧边栏中显示当前页面的类别和子类别。标题应该是当前类别的名称,并链接到当前类别。我正在努力实现的一个例子可以在侧边栏中看到:https://food52.com/shop/pantry 以下是我当前的网站示例:https://farmtofrank.wpengine.com/product-category/prepared-foods/ 这是我迄今为止创建的代码: 它可以工作,但会将父链
在WordPress主题版上,我有一个归档页面,页面顶部有一篇特色文章,上面显示了特色图片、发布日期和摘录,下面还有其他文章。 遇到了这样一个问题:文章的标题正确,图片正确,但摘录不正确。相反,它引入了不同帖子的文本。 下面的代码有什么不正确的线索吗?
如何让在其输出中的匹配行之前显示文件名?
我正在工作的wordpress与我自己的主题: 我有一个叫做展览的页面,在这个页面上我有两个类别:“当前”和“预览”。 当我发布一篇文章时,我想选择一个类别来显示文章的标题(永久链接)。类别不是按钮,它们只是不同帖子所属的“标题”。 我制作了一个名为“展览”的模板文件。php(见下面的代码),它应用于我在Wordpress中的展示页面。我不知道如何调用函数来显示类别名称,然后将类别属性化为我的帖子
我创建了一个自定义博客页面,可以在其中列出所有帖子。我有一个名为news的分类法帖子类型,我想在同一页面上显示该分类法下可用的帖子,并将其与普通帖子混合显示。 这是我用来显示帖子的while循环: while($wp_)查询- “title=”Read More“style=”颜色:白色;字体系列:“Roboto Condensed”,Arial,无衬线;左边距:5px;字体大小:粗体“ 那么,有