可以使用post_gallery
滤器下面是一个完全注释过的示例。
add_filter( \'post_gallery\', \'gallery_custom\', 10, 3 );
/**
* Filters the default gallery shortcode output.
*
* If the filtered output isn\'t empty, it will be used instead of generating
* the default gallery template.
*
* @see gallery_shortcode()
*
* @param string $output The gallery output. Default empty.
* @param array $attr Attributes of the gallery shortcode.
* @param int $instance Unique numeric ID of this gallery shortcode instance.
*/
function gallery_custom( $output, $attr, $instance ) {
// Remove the filter to prevent infinite loop.
remove_filter( \'post_gallery\', \'gallery_custom\', 10, 3 );
// Add opening wrapper.
$return = \'<div class="mydiv">\';
// Generate the standard gallery output.
$return .= gallery_shortcode( $attr );
// Add closing wrapper.
$return .= \'</div>\';
// Add the filter for subsequent calls to gallery shortcode.
add_filter( \'post_gallery\', \'gallery_custom\', 10, 3 );
// Finally, return the output.
return $return;
}
英寸gallery_custom()
, 移除post_gallery
调用前筛选gallery_shortcode()
否则我们会陷入无限循环。
请注意,输出需要连接到$return
. 在原始代码中,$return
持续被覆盖,因为=
使用而不是.=
字符串初始化后。
主输出是使用标准gallery输出功能生成的,gallery_shortcode( $attr );
我们的筛选器将不会应用于此调用,因为此时已将其删除。
将库输出连接到$return
, 我们添加结束HTML标记并添加回过滤器,以便在下次调用gallery shortcode函数时运行它。
最后我们返回输出。备选解决方案:更换[gallery]
快捷码函数:这里有另一种解决问题的方法。这一次是默认的gallery输出功能,gallery_shortcode()
从中删除gallery
短代码字符串。然后是替换函数,wpse_custom_gallery_shortcode()
连接到原始gallery
短代码字符串。
// Replace the default [gallery] shortcode function with a custom function.
add_action( \'init\', \'wpse_replace_gallery_shortcode\' );
function wpse_replace_gallery_shortcode() {
remove_shortcode( \'gallery\', \'gallery_shortcode\' );
add_shortcode( \'gallery\', \'wpse_custom_gallery_shortcode\' );
}
// Customized gallery shortcode function.
// See gallery_shortcode() for documentation.
function wpse_custom_gallery_shortcode( $attr ) {
$gallery = gallery_shortcode( $attr );
if ( $gallery ) {
return \'<div class="mydiv">\' . $gallery . \'</div>\';
}
}