在开机自检时在WordPress中按类别自动设置随机特色图片

时间:2020-02-20 作者:Stefan Gassner

基本上,当有人发布某个特定类别的博客时,我想从媒体库中选择大约3或4幅图像,自动随机设置一幅图像。到目前为止,我已经知道了这一点,但它只为该类别设置了一个图像。

function default_category_featured_image() {
global $post;
$featured_image_exists = has_post_thumbnail($post->ID);

if (!$featured_image_exists)  {
$attached_image = get_children( "post_parent=$post->ID&post_type=attachment&post_mime_type=image&numberposts=1" );

if ($attached_image) {

foreach ($attached_image as $attachment_id => $attachment) {
set_post_thumbnail($post->ID, $attachment);
}}
else if ( in_category(\'49\') ) {
set_post_thumbnail($post->ID, \'2200\');
    wp_reset_postdata();
}                      
                           }

      }
add_action(\'the_post\', \'default_category_featured_image\');
是否可以为每个类别随机提供多个特征图像?

1 个回复
最合适的回答,由SO网友:Andrea Somovigo 整理而成

您应该准备array 的图像ID,并随机选择其中一个。我说“其中一个”,因为如果我很好地理解你的问题,那么特征图像总是1。。这在某种程度上是不明确的,当您说设置一个图像,然后设置多个特征图像时,编辑部分代码并假设其余部分正常工作:

//...
else if ( in_category(\'49\') ) {
  // array of  ids of images for this category
  $arrImages = array(2200,2201,2202);

  // get random index from array $arrImages
  $randIndex = array_rand($arrImages);

  // output the value for the random index
  set_post_thumbnail($post->ID, $arrImages[$randIndex]);
  //wp_reset_postdata();

}
else if ( in_category(\'50\') ) { // for example.. and so on
  $arrImages = array(2203,2204,2205);
  $randIndex = array_rand($arrImages);
  set_post_thumbnail($post->ID, $arrImages[$randIndex]);
}
wp_reset_postdata(); 实际上不需要,因为您没有更改主查询请参见wp_reset_postdata()

相关推荐

按元值日期(Desc或ASC)过滤Pre_Get_Posts中的帖子

我试图通过一个元值来排序帖子,但它并没有以正确的方式工作。我将日期存储在post meta值中,如下所示01 December 2019 10:00. 现在我想对帖子进行排序desc 或asc 就像date.我尝试了以下代码:$orderby = $query->get( \'orderby\' ); $sorting = $query->get( \'order\' ); if (\'month\' == $order