如何在帖子和页面模板中使用自定义函数

时间:2020-07-27 作者:wpnewbie

我想添加一个自定义函数,将相关帖子添加到我的wp主题中。

我已将此函数代码添加到我的主题函数中。php文件,但它无法工作:

  function my_related_artickes()
  {
    $categories = wp_get_post_categories( $post->ID ); 
    $ids = array();
    foreach( $categories as $cat ){
        $ids[] = $cat;
    }
    return $ids;
  }
我这样调用函数:

<?php     
    $ids = my_related_articles();
    var_dump($ids);
    $related = new WP_Query( array(\'post_type\' => \'post\', \'category__in\' => $ids, \'posts_per_page\' => 4 ) ); 
    if( $related->have_posts() ): while( $related->have_posts() ): $related->the_post(); 
?>    
        <div class="col-md-3 col-lg-3 mt-3 mb-3 d-none d-md-block">
            <img class="img-fluid w-100 related-img mb-3" src="<?php echo the_post_thumbnail_url(); ?>">
            <a class="h5 text-decoration-none" href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
        </div>
<?php endwhile; endif; wp_reset_postdata(); ?> 
我怎样才能解决这个问题?

1 个回复
SO网友:mozboz

一个问题(可能还有更多;-)是$post->ID 从页面模板调用时,可能超出范围。

您可以更改函数的工作方式,将post ID作为参数,如下所示:

function my_related_artickes($postID)
{
    $categories = wp_get_post_categories( $postID ); 
    $ids = array();
    foreach( $categories as $cat ){
        $ids[] = $cat;
    }
    return $ids;
}
然后这样称呼它:

$ids = my_related_articles($post->ID);
显然,当你打电话给它时,一定要给它一个好的帖子ID。

相关推荐