下面的函数位于单个post循环内。
我在自定义字段中有一个ID数组。此类ID表示相关的帖子。我正在使用高级自定义字段(ACV)插件,并使用它管理自定义元。在这种情况下,为了获取相关的\\u内容元,我可以使用ACV函数get\\u字段(“related\\u content”),并从related\\u content字段中检索到的每个帖子中获取帖子数据。根据检索到的相关帖子的数量,我想显示略有不同的结果(使用较大的缩略图或根本没有缩略图,等等)。所以我想出了下面的php。然而,我不确定这是否得到了有效的优化或编写得更好。你介意看看吗?
我知道这不是一个严格意义上的Wordpress问题,但也与PHP/数据库相关,但由于它与Wordpress对象、数据库和函数相关,我认为在这里发布是合适的。也许有一个更好的方法来查询我想要的WP。。。非常感谢。
echo \'<ul>\';
foreach( get_field(\'related_content\') as $post_object) :
$post_type = get_post_type_object(get_post_type($post_object->ID));
for ($i = 0; $i <count($post_object); $i++ ) {
if ($i == 0 && $i < 4 ) {
printf(\'<li class="large"><a target="_blank" hre= "\'.get_permalink($post_object->ID).\'">\'.get_the_post_thumbnail($post_object->ID, \'small\').\'</li><span class="thumb-cat">\'.$post_type->labels->singular_name.\'</span><span class="thumb-title">\'.get_the_title($post_object->ID).\'</span></a></li>\');
}
elseif ($i > 3 && $i < 5 ) {
printf(\'<li class="medium"><a target="_blank" href="\'.get_permalink($post_object->ID).\'">\'.get_the_post_thumbnail($post_object->ID, \'smallest\').\'</li><span class="thumb-cat">\'.$post_type->labels->singular_name.\'</span><span class="thumb-title">\'.get_the_title($post_object->ID).\'</span></a></li>\');
}
elseif ($i > 6 ) {
printf(\'<li class="small"><a target="_blank" href="\'.get_permalink($post_object->ID).\'"><span class="thumb-cat">\'.$post_type->labels->singular_name.\'</span><span class="thumb-title">\'.get_the_title($post_object->ID).\'</span></a></li>\');
}
}
endforeach;
echo\'</ul>\';
最合适的回答,由SO网友:unfulvio 整理而成
我回答自己,因为这段代码工作得更好(之前有一个问题),而且我删除了一个无用的“for”:
echo \'<ul class="related-content">\';
$count = 0;
foreach(get_field(\'related_content\') as $post_object) :
$count++;
if ($count > 0 && $count < 4 ) {
printf(\'<li class="large"><a target="_blank" title="\'.get_the_title($post_object->ID).\'" href="\'.get_permalink($post_object->ID).\'"><span style="display: block" title="\'.get_the_title($post_object->ID).\'">\'.get_the_post_thumbnail($post_object->ID, \'small\').\'</span><span class="thumb-title">\'.get_the_title($post_object->ID).\'</span></a></li>\');
}
elseif ($count > 3 && $count < 6 ) {
printf(\'<li class="medium"><a target="_blank" href="\'.get_permalink($post_object->ID).\'">\'.get_the_post_thumbnail($post_object->ID, \'smallest\').\'<span class="thumb-title">\'.get_the_title($post_object->ID).\'</span></a></li>\');
}
elseif ($count > 6 ){
printf(\'<li class="small"><a target="_blank" href="\'.get_permalink($post_object->ID).\'"><span class="thumb-title">\'.get_the_title($post_object->ID).\'</span>\'. get_field(\'title_subtitle\').\'</a></li>\');
}
endforeach;
echo\'</ul>\';