php - 使用插件的 Wordpress ACF 元查询
问题描述
我在具有自定义帖子类型(称为“树”)的 WP 安装上运行插件WP Show Posts,该自定义帖子类型具有称为“流行度”(格式为“数字”)的自定义帖子字段。自定义字段是由高级自定义字段插件创建的,自定义帖子类型与插件自定义帖子类型 UI。
现在,我想创建一个列表,它只显示流行度值低于 10 的帖子。
为此,我遵循了插件作者的说明并调整了插件本身以允许附加参数。
我现在按照这篇支持文章中的建议使用以下代码,但不幸的是,我无法让它工作。输出是“无结果消息”。
这是我在 functions.php 中使用的代码:
add_filter( 'wp_show_posts_shortcode_args', function( $args, $settings ) {
if ( 4566 === $settings['list_id'] ) {
$args['meta_query'] = array(
array(
'key' => 'popularity',
'value' => 10,
'compare' => '<'
)
);
}
return $args;
}, 15, 2 );
我做错了什么?例如,我是否必须指定自定义帖子类型(即树)?
解决方案
如果你真的想使用这个“WP Show Posts”插件,在我写这个答案的那一刻,你需要修改它的核心功能才能修改它的查询。
- 走上这条路
your site folder > wp-content > plugins > wp-show-posts
,打开wp-show-posts.php
。在线386
:
代替
$query = new WP_Query(apply_filters('wp_show_posts_shortcode_args', $args));
有了这个:
$query = new WP_Query(apply_filters('wp_show_posts_shortcode_args', $args, $settings));
- 现在您可以修改查询。
functions.php
在您的文件中使用以下代码段。
add_filter('wp_show_posts_shortcode_args', 'your_custom_query', 10, 2);
function your_custom_query($args, $settings)
{
$args = $args;
if (4566 === (int)$settings['list_id']) {
$args['meta_query'] = array(
array(
'key' => 'popularity',
'value' => '10',
'compare' => '<',
'type' => 'NUMERIC'
)
);
}
return $args;
}
笔记:
- 确保
4566
是WP Show Posts
插件给你的 id,否则它不会工作。 - 通过执行这些步骤,您正在修改不推荐
WP Show Posts
的插件核心文件(即 wp-show-posts.php)。因此,在插件的下一次更新中,请确保您修改的行保持不变,否则会破坏您的页面。所以请密切关注更新! - 因为您的字段类型是
numeric
,所以我添加了'type' => 'NUMERIC'
参数,否则它将不起作用。
另一种使用wp_query
. 没有额外的插件
这是一个简单的方法wp_query
,可让您在不使用任何第三方插件的情况下完成工作。
$args = array(
'post_type' => 'trees',
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => 'popularity',
'value' => '10',
'compare' => '<',
'type' => 'NUMERIC'
)
)
);
$query = new WP_Query($args);
if ($query) {
while ($query->have_posts()) {
$query->the_post(); ?>
<h4><?php the_title() ?></h4>
<?php
}
} else {
echo "no post found!";
}
wp_reset_postdata();
这已经在 wordpress5.8
和作品上进行了全面测试。
推荐阅读
- java - 在 Spring Boot 上更改嵌入式 tomcat 版本
- r - 我可以按列创建具有一系列值的标志列吗?
- google-bigquery - 将数据插入 Bigquery 表的最佳方法
- java - Swing Frame 中的多线程和独立模式对话框
- python - 按名称键在字典列表中组合字典
- indexing - 由于 write.lock 导致 Solr 无法创建核心
- r - 如何将向量列表中的一个向量顺序附加到数据帧列表中的一个数据帧
- apache-camel - APACHE Camel:异常处理器后中止路由
- node.js - 使用 NodeJS 更改麦克风声音
- uproot - 与 root_numpy 相比,uproot 中 TTreeMethods.array 的性能较慢