获取帖子的缩略图URL或以短代码显示默认图像

时间:2014-07-10 作者:user51030

我正在尝试让我的代码:

获取帖子的缩略图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*这样做的目的是在我的帖子中使用一个快捷码来显示我朋友的照片。我网站的页面是关于我的家人和朋友的,当我想引用一个页面时,我只想显示他们页面的拇指,这是他们的图片,如果没有拇指,则显示默认图片(不适用图片)。

2 个回复
最合适的回答,由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 "\\">"; 
我想补充一点,在将来编写代码时,一个很好的经验法则是一步一步地进行,而不是一次编写一大堆代码。一次只做一行,确保变量包含预期的输出,然后再继续下一步。否则,您最终可能会得到这样一段代码,这些代码实际上在多个方面存在问题,并且很难和/或很耗时地尝试找出它不起作用的原因。

SO网友:kisabelle

您需要转义echo语句中的引号:

echo "<img src="";
应更改为:

echo "<img src=\\"";
或者可以使用单引号,这样就不必转义双引号:

echo \'<img src="\';
同样,最后一行代码应更改为:

echo "\\">"; 

结束

相关推荐

Gist shortcode is not working

我刚安装了一个全新的Wordpress用于测试,因为我打算刷新我当前的网站。我的一个要求是能够嵌入Gist中的代码。在Wordpress文档之后,较新版本附带了Gist的特定短代码:Gist Shortcode问题是它根本不起作用。我试着简单地将url粘贴在一行上,或者将其包裹在[要点]标签上,但没有任何效果。url只是在帖子中显示为原始文本。我知道有些插件提供了相同的功能,但我真的希望使用Wordpress的内置功能。我的网站已自动托管并安装在Azure网站上,运行PHP 5.4和Wordpress 3