是否使用preg_REPLACE将库与内容分开?

时间:2012-05-29 作者:Josh M

在Wordpress主题中,我需要将图库与the_content. 我认为可以通过get\\u the\\u content和preg\\u replace来实现这一点,但这有点超出了我实际实现解决方案的技能水平。

具体情况如下。有一个画廊看起来像这样:

 <div class="gallery">
      <section class="clearfix">
            <div class="gallery-row">
         some <figures>
             </div>
      </section>
 </div>
  the rest of the content
是否有某种方法可以将该库放入一个变量中,并将其余所有内容放入另一个变量中。

然后我就可以在我想要的任何地方回显变量,对吗?

1 个回复
SO网友:fuxia

最简单的方法是劫持gallery短代码(不需要额外的正则表达式),将其存储在某处并添加到末尾。

原型

<?php # -*- coding: utf-8 -*-
/**
 * Plugin Name: T5 Move Galleries To End Of Content
 */
add_action( \'after_setup_theme\', array ( \'T5_Move_Galleries\', \'init\' ) );

class T5_Move_Galleries
{
    public static $galleries = array();

    /**
     * Re-order gallery shortcodes and register the content filter.
     */
    public static function init()
    {
        remove_shortcode( \'gallery\', \'gallery_shortcode\' );
        add_shortcode( \'gallery\', array ( __CLASS__, \'catch_gallery\' ) );
        // Note the priority: This must run after the shortcode parser.
        add_filter( \'the_content\', array ( __CLASS__, \'print_galleries\' ), 100 );
    }

    /**
     * Collect the gallery output. Stored in self::$galleries.
     *
     * @param array $attr
     */
    public static function catch_gallery( $attr )
    {
        self::$galleries[] = gallery_shortcode( $attr );
    }

    /**
     * Append the collected galleries to the content.
     *
     * @param  string $content
     * @return string
     */
    public static function print_galleries( $content )
    {
        return $content . implode( \'\', self::$galleries );
    }
}

结束

相关推荐

the_excerpt and shortcodes

我正在使用索引页上的\\u摘录。我还在我的每一篇文章的开头使用dropcap快捷码。在索引页面上,帖子不会显示周围带有dropcap快捷码的信件。如果我的帖子中有“Dog”一词,索引页会显示“og”。在使用\\u摘录时,如何使用短代码?短代码 function drcap ($atts, $content = null) { return \'<div class=\"dropcap\">\' . do_shortcode($content) . \'</div&g