从我读到的内容来看,您可以看到帖子缩略图的URL/路径是一个数组。我们需要考虑以下几点,使其尽可能精简和可预测
重要注意事项我们确实需要一些方法来确保我们获得最新的三篇文章,这些文章实际上有缩略图,以避免意外的输出和错误。用这样一种心态编码总是很重要的:我的代码会被黑客攻击,它会失败,它会有bug。一旦你有了这种心态,那么你就从不同的角度来看待你的代码,这让你提出这样的问题:如果这段特定的代码返回了一个错误,它将如何影响我的输出,我将如何以预期的、可预测的方式安全可靠地处理这些错误,而不破坏我网站上的其他内容
我们只需要三篇最新帖子的帖子ID,所以为了节省资源,为什么不只查询帖子ID
当您需要精简、无分页、直截了当的查询时,我总是使用get_posts
因为它在法律上破坏了分页。这使您的查询速度更快,这对有许多帖子的网站非常有帮助。你仍然可以使用WP_Query
, 但是你需要记住通过\'no_found_rows\' => true
到您的查询参数(,这正是get_posts
顺便说一句)。另一个plus使用get_posts
它只是返回$posts
来自WP_Query
例子但这只是个人喜好
代码我更喜欢为长代码编写函数,以使我的模板尽可能简单和简短。然后我可以在需要的地方调用我的函数,甚至可以使用它们do_action()
调用我的模板,然后将我的函数挂接到该特定操作
无论如何,让我们看看函数;(NOTE: 以下内容未经测试,需要PHP 5.4以上版本,可以根据需要使其更加动态
function get_latest_post_thumbnails_urls()
{
// Set an empty variable which will hold our array of URL\'s
$output = [];
// Set our query args
$args = [
\'posts_per_page\' => 3,
\'fields\' => \'ids\', // Only get post ID\'s
\'meta_query\' => [ // Get posts which has thumbnails only
[
\'key\' => \'_thumbnail_id\',
\'compare\' => \'EXISTS\'
]
],
// Any additional parameters you might need
];
$q = get_posts( $args );
// ALWAYS make sure we have posts, else return $output
if ( !$q )
return $output;
// Ok, we have posts, lets loop through them and create an array of URL\'s
foreach ( $q as $id )
$output[] = wp_get_attachment_url( get_post_thumbnail_id( $id ) );
// Return our array
return $output;
}
我们现在可以使用
get_latest_post_thumbnails_urls();
任何我们需要的地方。
用法我们需要记住,我们的函数可能会返回一个空数组,或者返回一个包含1、2或3个URL的数组,因此在尝试使用任何东西来避免错误和意外故障之前,我们必须始终确保这一点
这可能是我们可以使用的安全用例
$urls = get_latest_post_thumbnails_urls();
// Make sure we do not have an empty array
if ( $urls ) {
foreach ( $urls as $url ) {
// Do something with your thumbnail url
echo $url . \'</br>\'; // For testing, remove this
}
}