php - Wordpress Post Meta 仅适用于循环中的一篇文章
问题描述
只有我创建的第一个帖子在此循环中提供了 url,我创建的所有后续帖子都没有将 url 显示为现有。
global $post;
$posts = get_posts(array(
'post_type' => 'logos',
'post_status' => 'publish',
'posts_per_page' => -1,
'fields' => 'ids'
)
);
echo "<div class='ssslider-{$slider['id']}'>";
foreach($posts as $p){
$company_url = get_post_meta($p,"company_url",true);
$title = get_the_title($p);
$thumb_id = get_post_thumbnail_id($p);
$thumb_url_array = wp_get_attachment_image_src($thumb_id, 'thumbnail-size', true);
$thumb_url = $thumb_url_array[0];
echo "<div style='margin:0px 40px;overflow:hidden;'><a href='{$company_url}' target='_blank'><img style='height:100px;' src='{$thumb_url}' alt='{$title}'/></a></div>";
}
echo "</div>";
解决方案
虽然这更常见WP_Query
,但get_posts()
应该可以正常工作。
看起来问题出在您使用get_post_meta()
.
第一个参数应该是Post ID,看起来你正在传递一个WP_Post Object。
注意,get_post_thumbnail_id()
也get_the_title()
应该使用 ID,但声明也接受 WP_Post 对象。
$posts = get_posts([
'post_type' => 'logos',
'post_status' => 'publish',
'posts_per_page' => -1,
'fields' => 'ids'
]);
echo "<div class='ssslider-{$slider['id']}'>";
foreach( $posts as $p ){
$company_url = get_post_meta( $p->ID, 'company_url', true );
$title = get_the_title( $p->ID );
$thumb_id = get_post_thumbnail_id( $p->ID );
$thumb_array = wp_get_attachment_image_src( $thumb_id, 'thumbnail-size', true );
$thumb_url = $thumb_array[0];
echo "<div style='margin:0px 40px;overflow:hidden;'><a href='{$company_url}' target='_blank'><img style='height:100px;' src='{$thumb_url}' alt='{$title}'/></a></div>";
}
echo "</div>";
推荐阅读
- javascript - 为什么不能在 javascript 中获得正确的日期(加上 1 天)?
- java - Java 将 .xls 文件显示为 .xls 和 xlsx 的两倍
- android - 上传文件时出现错误(没有这样的文件或目录)
- c# - 过滤解析的 JSON 对象
- r - 从 matplot 中删除空白区域
- php - 如何在 `route()` 函数中添加默认的第三个参数`$absolute`?
- python - 我应该如何随机生成异常值?
- vba - 通过 ODBC 从 MariaDB 自动重新链接表 (VBA)
- laravel - 用户单击下拉列表中的选项后如何显示数据?
- ios - 初始化我的模型实例给我 <
>