这不是防弹的,但在大多数情况下应该可以很好地工作:
class WPSE_105676_Gallery_First {
private static $_gallery = \'\',
$_handler;
public static function gallery( $attr ) {
self::$_gallery .= is_callable( self::$_handler ) ? call_user_func( self::$_handler, $attr ) : \'\';
return \'\';
}
public static function content( $text ) {
$text .= self::$_gallery;
self::$_gallery = \'\';
return $text;
}
public static function startup() {
if ( ! isset( self::$_handler ) ) {
if ( empty( $GLOBALS[\'shortcode_tags\'][\'gallery\'] ) || ! self::$_handler = $GLOBALS[\'shortcode_tags\'][\'gallery\'] )
self::$_handler = \'gallery_shortcode\';
add_shortcode( \'gallery\', array( __class__, \'gallery\' ) );
}
add_filter( \'the_content\', array( __class__, \'content\' ), 1000 );
}
}
add_action( \'init\', array( \'WPSE_105676_Gallery_First\', \'startup\' ), 100 );
用外行的话说
startup()
我们将当前的短代码处理程序保存为
gallery
(因此,这也应该适用于覆盖默认值的插件和主题),然后用我们自己的插件和主题替换它
gallery()
方法这就是我们“捕捉”画廊的地方&;返回一个空字符串,使其不再出现在存在快捷码的位置。
出来content()
方法连接到the_content
在低优先级筛选器上,以确保它在分析完所有短代码以及可能添加自己内容的任何其他筛选器之后运行。这将附加捕获的库,重置属性,并返回帖子内容。