如果你没有读过Tom\'s answer to your question, 先读一读。他给出了一个很好的解释(一如既往!)当然,为什么会出现错误。这是在进行WP开发时需要了解的重要信息,他对此进行了很好的解释,所以我在此不再重复。
我确实有一个建议可以解决您的问题,即未定义的$thumbnail
价值
在如何使用它的上下文中,似乎原始作者(我假设你是从其他地方得到的)希望这是一个对象(因此->
). 我试图找到它的来源,因为有很多“重复使用”和“重新散列”的代码片段,几乎所有与WP相关的东西都有,有好的,也有坏的。
它似乎来了from here. 不幸的是,这并不能提供解决方案。如果他是原作者,错误就来自那里,而且没有足够的上下文来确定他打算去哪里$thumbnail
来自。
因此,严格查看所涉及的WP函数,我们可能会做出“最佳猜测”,即作者打算将其作为当前$post
对象(这是我的猜测)。
WP功能get_the_post_thumbnail()
要求第一个参数为post ID (see documentation here). ID包含在对象中($post->ID
).
在本例中,原始代码段作者表示$post->ID
具有$thumbnail->ID
如果$thumbnail
之前定义为$post
对象,但它不是。
所以要解决这个问题,或者至少尝试解决这个问题,我们需要定义要传递的对象。我们假设电流$post
是必需的对象,并且可以作为全局对象使用。以下是对该部分的更改,您可以尝试:
if ( has_post_thumbnail() ){
global $post;
echo \'<div class="portfolio-featured-image">\';
echo \'<a href="\' . get_permalink() .\'" title="\' . the_title_attribute( \'echo=0\' ) . \'">\';
echo get_the_post_thumbnail($post->ID, \'portfolio-featured\');
echo \'</a>\';
echo \'</div>\';
}
写这个答案比在网上查找这些东西要花更长的时间(总共大约2分钟)。所以我的建议是学习其中的一些东西,它们是如何组合在一起的,以及它们是如何使用的。知道汤姆和我的解释,你就能相对较快地自己弄明白这一点。最重要的部分是学习如何将WP的文档用于其功能(请注意,我在哪里引用了上述文档)。您可以使用它来了解函数的期望值,并从那里向后工作。
Update
另一种可能的方法是使用WP
get_the_ID()
获取帖子ID的函数(
see docs here). 因此,与其使用
global $post
, 您将使用
get_the_ID()
获取当前帖子的ID以便您可以传入
get_the_post_thumbnail()
.
if ( has_post_thumbnail() ){
$post_id = get_the_ID();
echo \'<div class="portfolio-featured-image">\';
echo \'<a href="\' . get_permalink() .\'" title="\' . the_title_attribute( \'echo=0\' ) . \'">\';
echo get_the_post_thumbnail($post_id, \'portfolio-featured\');
echo \'</a>\';
echo \'</div>\';
}