Wordpressのテーマでは、ギャラリーを他のthe_content.
から切り離す必要があります。get_the_contentとpreg_replaceを使ってそれを実現できると思いますが、それは私のスキルレベルを超えて実際にソリューションを実装する方法です。
これが詳細です。このようなギャラリーがあります。
<div class="gallery">
<section class="clearfix">
<div class="gallery-row">
some <figures>
</div>
</section>
</div>
the rest of the content
そのギャラリーを変数に入れて、コンテンツの残りすべてを別の変数に入れる方法はありますか。
それでは、変数を必要な場所にエコーすることができます。
これを行う最も簡単な方法は、ギャラリーのショートコードをハイジャックし(余分な正規表現は不要)、どこかに保存して最後に追加することです。
プロトタイプ
<?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 );
}
}