我正在尝试让我的代码:
获取帖子的缩略图url或(如果没有缩略图)以响应默认url,我不确定这是最简单的方法还是正确的方法。
这是目前为止的代码。$postid
作为我想要url来源的帖子id的属性。
<?php
// Add Shortcode
function friend_pic( $atts , $content = null ) {
// Attributes
extract( shortcode_atts(
array(
\'postid\' => \'\',
), $atts,
\'f-p\'
)
);
$postid = $atts[\'postid\'];
ob_start();
// shortcode contents from here
echo "<img src=\\"";
if ( $postid ) {
$thumb_url = wp_get_attachment_url( get_post_thumbnail_id( $postid, \'thumbnail\', false) );
$thumb_url = $thumb_url[0];
}else{
echo "http://www.website.com/default.jpeg";
}
echo "\\">";
// Shortcode edit ends here
$output = ob_get_contents();
ob_end_clean();
/// FINAL OUTPUT ////
return $output;
}
add_shortcode( \'f-p\', \'friend_pic\' );
**Aditional Details*这样做的目的是在我的帖子中使用一个快捷码来显示我朋友的照片。我网站的页面是关于我的家人和朋友的,当我想引用一个页面时,我只想显示他们页面的拇指,这是他们的图片,如果没有拇指,则显示默认图片(不适用图片)。
最合适的回答,由SO网友:kisabelle 整理而成
我进一步检查了它,发现您的代码有几个问题。
if语句检查帖子ID,但没有检查是否确实存在特色图像集,因此,我在if语句中添加了一个条件,即get\\u post\\u thumbnail\\u id()的右括号放错了位置,您实际上没有回显$thumb\\u url,wp\\u get\\u attachment\\u url()返回图像src(不是数组),并且在附件id之外没有使用任何其他参数,这意味着$thumb\\u url[0]只返回图像src的第一个字母。看起来您打算使用wp\\u get\\u attachment\\u image\\u src(),它接受图像大小参数。(参见法典:Function Reference/wp get attachment url, Function Reference/wp get attachment image src)这里是您代码的修改版本:
echo "<img src=\\"";
if ( $postid && get_post_thumbnail_id( $postid)) {
$thumb_url = wp_get_attachment_image_src( get_post_thumbnail_id( $postid), \'thumbnail\', false );
$thumb_url = $thumb_url[0];
echo $thumb_url;
}
else{
echo "http://www.website.com/default.jpeg";
}
echo "\\">";
我想补充一点,在将来编写代码时,一个很好的经验法则是一步一步地进行,而不是一次编写一大堆代码。一次只做一行,确保变量包含预期的输出,然后再继续下一步。否则,您最终可能会得到这样一段代码,这些代码实际上在多个方面存在问题,并且很难和/或很耗时地尝试找出它不起作用的原因。