我更改了下面的html代码
<a href="<?php echo pietergoosen_get_first_image() ?>" title="<?php printf( the_title_attribute( 'echo=0' ) ); ?>" rel="lightbox">
<?php echo pietergoosen_adjust_first_image(pietergoosen_get_first_image(), get_the_title(), 525, 0); ?>
</a>
到下面的函数,因为我需要一个带有if语句的图像大小
function pietergoosen_the_excerpt_image_output() {
$firstImage = pietergoosen_get_first_image();
$imageAttribute = esc_attr(the_title_attribute( 'echo=0' ));
$title = get_the_title();
if (isset($classes) && $classes == 'custom-sidebar-per-page-width'){
$imageSize = '525';
} else {
$imageSize = '380';
};
printf(
'<a href="%1$s" title="%2$s" rel="lightbox"><pietergoosen_adjust_first_image(%1$s, %3$s, %4$d, %4$d)></a>',
$firstImage,
$imageAttribute,
$title,
$imageSize
);
}
我像这样调用函数
<?php echo pietergoosen_the_excerpt_image_output(); ?>
但现在图像不再显示了。有关如何修复它的任何建议,请
答案 0 :(得分:1)
你的printf()电话是一团糟。它有语法错误,完全不必要:
echo "<a href='{$firstImage}' title='$imageAttribute' etc....";
就是必要的。
使用您的版本:
printf('<a href="%1$s" title="%2$s" rel="lightbox"><p
^--single quoted string
^^--- not a valid formatting char for printf
^^--- variables are NOT interpolated in '-quoted strings
一个合适的(仍然是不必要的)printf()将是
printf('a href="%s" title="%s" ...., $var1, $var2);
^^--insert a string
在PHP中使用printf / sprintf()调用的唯一时间是你需要对插入的字符进行特殊格式化,例如
printf('%05d', 12); // outputs 00012
答案 1 :(得分:0)
您的新功能没有返回值回显,它是从函数内打印。最后一行应该是:
return sprintf(
'<a href="%1$s" title="%2$s" rel="lightbox"><pietergoosen_adjust_first_image(%1$s, %3$s, %4$d, %4$d)></a>',
$firstImage,
$imageAttribute,
$title,
$imageSize
);