问题描述
所以我在 wordpress 环境中的 function.PHP 文件中,我想添加一个过滤器,它允许我的一个插件选择多个自定义字段。更具体地说,我有这个搜索插件,它在下拉菜单中显示结果,每个结果的右侧都有图像和描述字段。我想要的是用一些自定义字段填充描述字段,一个在另一个下面显示为列表。我对 PHP 了解不多,所以我不知道我到底做错了什么。这是我的实际代码:
add_filter( 'asl_results','asl_get_the_content_after',10,1 );
function asl_get_the_content_after( $results ) {
// Parse through each result item
foreach ($results as $k=>&$r) {
if ( isset($r->post_type) ) {
$r->content = get_post_field('year',$r->id);
$r->content = get_post_field('color',$r->id);
$r->content = get_post_field('price',$r->id);
}
}
return $results;
}
使用此代码,搜索结果仅显示最后一个字段。我真正想要的是在不同的行中显示所有这些自定义字段。我已经尝试将所有内容放在一个自定义字段中,但它不考虑空间,将所有内容放在一行中。我该怎么办?
解决方法
这种行为是意料之中的,因为在 IF 内部,您要替换内容,而不是将其连接或添加到数组中。正确的做法是:
if ( isset($r->post_type) ) {
if ( !$r->content ) $r->content = '';
$r->content .= get_post_field('year',$r->id) . "<br>";
$r->content .= get_post_field('color',$r->id) . "<br>";
$r->content .= get_post_field('price',$r->id) . "<br>";
}