显示不带插件的相关帖子

时间:2021-05-03 作者:023023

我正在尝试使用functions.php:

function posts_related($related){ if (is_single()) {
global $post;
// Build basic custom query arguments
$custom_query = new WP_Query( array( 
       \'posts_per_page\' => 8, // Number of related posts to display
       \'post__not_in\' => array($post->ID), // Ensure that the current post is not displayed
       \'orderby\' => \'rand\', // Randomize the results
));

// Run the loop and output data for the results
if ( $custom_query->have_posts() ) : while ( $custom_query->have_posts() ) : $custom_query->the_post(); 
 if ( has_post_thumbnail()
  ) { 
                 $permalink = the_permalink();
                 $post_thumbnail = the_post_thumbnail(\'medium\');
                 $title = the_title();                       
                 $related .= \'<a href="\' . $permalink .  \'"><img src="\' . $post_thumbnail . \'/></a>\';             
                 }
           $related .=  \'<a href="\' .  $permalink . \'"><b>\' . $title . \'</b></a>\';
     endwhile; 
 else : 
    $related .= \'<p>Nothing to show.</p>\';
endif;
// Reset postdata
}
         echo \'<pre>\'; var_dump( has_post_thumbnail() ); echo \'</pre>\'; 

    return $related;

}    //wp_reset_postdata();

add_filter( "the_content", "posts_related", 99 );
add_theme_support( \'post-thumbnails\' );
set_post_thumbnail_size( 100, 50, true );
但我无法正确处理输出。我需要它显示在下面的职位(单职位)。

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

我稍微修改了您的代码,并在Wordpress安装上进行了测试
如果使用过滤器(如“the\\u content”)接收作为参数的内容,则还必须返回此内容
这是带有注释的函数的工作版本。

 //this filter recieves $content, which you should always return, 
 //otherwise you will not see the content

 function posts_related($content){ 
    if (is_single()){

        $custom_query = new WP_Query( array( 
            \'posts_per_page\' => 8, 
            \'post__not_in\' => array(get_queried_object_id()), 
            \'orderby\' => \'rand\', 
        ));

        //lets define $related variable outside of while loop
        // and if statement to make it visible 
        $related = \'\';

    if ( $custom_query->have_posts() ) : 
        while ( $custom_query->have_posts() ) : $custom_query->the_post();

            //use functions with "get_" to recieve a value
            // and not echo it
            $permalink = get_the_permalink();
            $title = get_the_title();
        
            if ( has_post_thumbnail() ) { 

                //here we receiving just url with
                //get_the_post_thumbnail_url()
                $related .= \'<a href="\' . $permalink .  \'">
                                <img src="\' . get_the_post_thumbnail_url() . \'" />
                             </a>\';   
      
            }else{    
                $related .=  \'<a href="\' .  $permalink . \'"><b>\' . $title . \'</b></a>\';
            }
        endwhile;
        wp_reset_postdata();

        //return content + related posts
        //if is_singular and we have related post
        return $content . $related;

    else : 

        //if is_singular but no posts were found
        $related .= \'<p>Nothing to show.</p>\';

    endif;

    //if is_singular and we have related posts
    //return content + related posts 
    //or content + "nothing to show"
    return $content . $related;
    
}

//if page is not a single,
//just return content
return $content;

}
附言:通常相关的帖子都是具有相同类别或标签的帖子,只是orderby withrand 将返回随机帖子,但我想你知道这一点。