使用do_shortcode
作用
检查[gallery]
存在于您的帖子内容中
这里有一个简单的函数可以插入函数。检查当前帖子内容的库短代码的php:
function gallery_shortcode_exists(){
global $post;
# Check the content for an instance of [gallery] with or without arguments
$pattern = get_shortcode_regex();
if(
preg_match_all( \'/\'. $pattern .\'/s\', $post->post_content, $matches )
&& array_key_exists( 2, $matches )
&& in_array( \'gallery\', $matches[2] )
)
return true;
# Sourced from http://codex.wordpress.org/Function_Reference/get_shortcode_regex
}
使用do_shortcode()
渲染图库
您可以在模板文件的循环中使用以下内容:
# Determine if the post_content column contains the string [gallery]
if( gallery_shortcode_exists() ){
# Get the first three attachments using the posts_per_page parameter
$args = array(
\'post_type\' => \'attachment\',
\'post_mime_type\' => \'image\',
\'posts_per_page\' => 3,
\'post_parent\' => get_the_ID()
);
$attachments = get_children( $args );
# If any attachments are returned, proceed
if( $attachments ){
# Spin cycle to collate attachment IDs
foreach( $attachments as $attachment )
$includes[] = $attachment->ID;
# Format our IDs in a comma-delimited string
$includes = implode(\',\', $includes);
# Inject your include argument
$shortcode = str_replace(\'[gallery\', "[gallery include=\'$includes\' ", get_the_content());
# Render the Gallery using the standard editorial input syntax
echo do_shortcode($shortcode);
# Add a View More link
echo \'<a href="\' . get_permalink() . \'">\' . __(\'View more\', \'domain\') . \'</a>\';
}
else
_e(\'Foo Bar - No attachments found and no excerpt to display\', \'domain\');
}
else
# Whatever fallback you desire
the_excerpt();