显示[图库]内容的类别视图

时间:2013-09-22 作者:Trass Vasston

因此:

我有一堆帖子,里面有[图库]的。它们属于“画廊”类。

我希望类别视图显示(部分| |全部)每篇文章中图库的内容。相反,它似乎在剥离或根本不渲染库。理想情况下,我希望能够控制家中的大部分画廊是摘录的,但任何事情都可以,真的。

这似乎是一个常见的请求,但我在上面找不到任何内容。帮助和感谢!

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

问题是[gallery] 短代码(与任何其他短代码一样)在以下情况下显示:the_content() 用于显示帖子内容,主题通常在单个模板中执行此操作。

在主题中,通常使用内容而不是打印the_excerpt() 去掉html和短代码。

确保您可以编辑要使用的类别存档the_content() 而不是the_excerpt(), 但在这种情况下,所有帖子内容都会打印在存档中。

但在我看来,您似乎想将库用作摘录(显示库的短代码而不是标准代码the_excerpt()).

现在,您的类别模板(category.php) 应该包含类似的内容(semplified):

while( have_posts() ) :  the_posts();

   the_title();
   the_excerpt();

endwhile;
所以你可以使用\'the_excerpt\' 在库存档中以及达到其他编码时(例如,对于前X个帖子),过滤以输出短代码。

add_filter(\'the_excerpt\', \'maybe_excerpt_gallery\');

function maybe_excerpt_gallery($excerpt) {
  global $post, $wp_query;
  if ( is_category() && in_category(\'galleries\', $post) && $wp_query->current_post < 5 ) {
    $gallery = get_the_post_gallery_shortcode($post);
    return $gallery ? $gallery : $excerpt;
  }
}
一些主题,使用类似the_content( \'Continue reading...\' ) 在存档中,在这种情况下,将相同的筛选器添加到the_content: 一旦功能检查我们是否在“画廊”类别档案中,the_content 主题中其他部分的功能不受影响。

在您搜索codex之前get_the_post_gallery_shortcode 函数,我得建议你。。。此函数not 存在于WordPress中,但让我们写下它:

function get_the_post_gallery_shortcode( $post ) {
  if ( empty($post) ) global $post;
  if ( empty($post) || ! isset($post->post_content) ) return false;
  if (
    preg_match_all( \'/\'. get_shortcode_regex() .\'/s\', $post->post_content, $matches )
    && array_key_exists( 2, $matches ) && in_array( \'gallery\', $matches[2] )
  ) {
    foreach ( $matches[2] as $i => $sc ) {
      if ( $sc == \'gallery\' ) return do_shortcode( $matches[0][$i] );
    }
  }
  return false;
}
我用过get_shortcode_regex 检查并提取短码(从codex偷来的大部分代码),如果发现则输出。

现在,当你访问你的图库分类档案时,前5篇文章将把图库(如果存在)作为摘录。

结束

相关推荐

如何编写Get_Categories_by_Year()函数?

我需要写信a function to get all the categories for a given year. 由于分类法的创建日期没有存储在数据库中,我真的不知道该怎么做。我最初的想法是获取给定年份的所有帖子,并以某种方式找到与这些帖子相关的所有类别,但我不知道如何做到这一点,这听起来非常缓慢。也许我可以写一些SQL,但我对PHP更为精通。再次回到函数,我想它应该是这样的:function get_categories_by_year($year) { // Do stuff...&#