问题是[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篇文章将把图库(如果存在)作为摘录。