这个do_shortcode() 函数以字符串的形式返回快捷码输出,该字符串可以用the_content 滤器下面是一个如何做到这一点的示例,
// add filter with late priority
add_filter(\'the_content\', \'my_post_attachments_gallery\', 99);
function my_post_attachments_gallery($content) {
// modify only published posts
if (
is_singular( \'post\') &&
\'publish\' === get_post_status()
) {
// get attachemnt ids
$attachment_ids = my_post_attachment_ids();
if ( $attachment_ids ) {
// do_shortcode returns the shortcode output as a string
// which we can append to the content
$content .= do_shortcode(\'[av_gallery ids="\' . implode(",", $attachment_ids) . \'" type="slideshow" preview_size="large" crop_big_preview_thumbnail="avia-gallery-big-crop-thumb" thumb_size="portfolio" columns="\' . count($attachment_ids) . \'" imagelink="lightbox" lazyload="avia_lazyload" av_uid="av-jgesnq4m" custom_class="av-gallery-style-"]\');
}
}
// return content back to the_content filter
return $content;
}
// helper function
function my_post_attachment_ids( $post = null ) {
$post = get_post($post);
$query = new WP_Query(array(
\'post_type\' => \'attachment\',
\'posts_per_page\' => 500,
\'post_parent\' => $post->ID,
\'exclude\' => get_post_thumbnail_id($post),
\'no_found_rows\' => true,
\'update_post_meta_cache\' => false,
\'update_post_term_cache\' => false,
\'fields\' => \'ids\',
));
return $query->posts;
}
使用helper函数,我们可以跳过foreach循环并保存几行,因为自定义查询只返回快捷码所需的附件ID。有了这两个额外的参数,我们可以跳过一些处理,使查询速度更快一些。