所以我们有这个:
if ( is_home() ) {
echo \'<div id="featured-image-home"><img src="\'. get_stylesheet_directory_uri() . \'/images/sample.jpg" /></div>\';
}
elseif ( is_singular( array( \'post\' ) ) ! has_post_thumbnail() ){
echo \'<div id="featured-image-home"><img src="\'. get_stylesheet_directory_uri() . \'/images/blog-banner.jpg" /></div>\';
}
else ( is_singular( array( \'post\', \'page\' ) ) && has_post_thumbnail() ){
echo \'<div id="featured-image">\';
echo get_the_post_thumbnail($thumbnail->ID, \'header\');
echo \'</div>\';
}
首先,这个if语句并不常见,对大多数人来说没有意义:
elseif ( is_singular( array( \'post\' ) ) ! has_post_thumbnail() ){
我读了这篇文章,看到了:
如果post为单数,则没有post缩略图
如果我大声对别人说的话,会让我看起来很滑稽。让我们将其更改为您真正想要的内容:
如果帖子是单数且没有帖子缩略图
elseif ( is_singular( array( \'post\' ) ) && ( ! has_post_thumbnail() ) ) {
您还有一个语法错误,看看else的情况,您正在执行以下操作:
if ( condition ) {
// stuff
} else ( new condition ) {
// stuff
}
这不是有效的PHP语法,但即使是,它也是意外的、不常见的、难以捕捉的,并且违反了我所知道的所有编码标准。您应该改为使用elseif,所以让我们来修复它
还可以练习spartan编程并尽早返回,删除过程中的所有else语句:
if ( is_home() ) {
echo \'<div id="featured-image-home"><img src="\'. get_stylesheet_directory_uri() . \'/images/sample.jpg" /></div>\';
return;
}
if ( is_singular( array( \'post\' ) ) && ( !has_post_thumbnail() ) ){
echo \'<div id="featured-image-home"><img src="\'. get_stylesheet_directory_uri() . \'/images/blog-banner.jpg" /></div>\';
return;
}
if ( is_singular( array( \'post\', \'page\' ) ) && has_post_thumbnail() ){
echo \'<div id="featured-image">\';
echo get_the_post_thumbnail($thumbnail->ID, \'header\');
echo \'</div>\';
}
最后还有一个问题,不是每个函数都可以在主循环外调用,这包括
has_post_thumbnail
. 如果您尚未设置当前帖子,函数如何知道您在谈论哪个帖子?PHP不是灵媒,所以让我们告诉它:
global $post;
$post->ID;
给我们:
global $post;
if ( is_home() ) {
echo \'<div id="featured-image-home"><img src="\'. get_stylesheet_directory_uri() . \'/images/sample.jpg" /></div>\';
return;
}
if ( is_singular( array( \'post\' ) ) && ( !has_post_thumbnail( $post->ID ) ) ){
echo \'<div id="featured-image-home"><img src="\'. get_stylesheet_directory_uri() . \'/images/blog-banner.jpg" /></div>\';
return;
}
if ( is_singular( array( \'post\', \'page\' ) ) && has_post_thumbnail( $post->ID ) ){
echo \'<div id="featured-image">\';
echo get_the_post_thumbnail($thumbnail->ID, \'header\');
echo \'</div>\';
}
最后,查看您的呼叫以获取缩略图:
echo get_the_post_thumbnail($thumbnail->ID, \'header\');
正如我前面提到的,PHP不是通灵的,再多的洞察力也无法填满
$thumbnail
可能你指的是现在的帖子?如果是,请使用
$post
相反
记住,你必须提前申报所有东西。如果你不告诉代码一些东西,然后尝试使用它,PHP会认为你的意思是null
或false
, 或者类似的东西,并生成警告。这会导致各种各样的问题。仅仅因为你知道你的意思/意图并不意味着电脑知道