web-dev-qa-db-ja.com

投稿ごとに最初のギャラリーを非表示にする方法

私は画像を添付するためにギャラリーを使用しているので、すべての投稿の一番最初のギャラリーはスライダーを生成するために使用され、それ以上は何もしません。だからこそ私はそれをポストのコンテントで見たくないのです。私はこのように見える単一の投稿があるとしましょう:

[gallery ids="1,2"] // hide
[gallery ids="3,4"] // display 
[gallery ids="5,6"] // display

最初のギャラリーを投稿ごとにコンテンツからブロックする方法はありますか。

#gallery-1 { display: none !important; } 

うまく機能しますが、地獄のように醜いです:)またそれはギャラリーを非表示にするだけですが、それはまだそこにあります、同じことはそれがそれのJSにも言えます。

1
Wordpressor

preg_replace()を使うこともできますが、$outputフィルタを使ってpost_galleryを上書きし、最初の実行後にフィルタを削除する方がはるかに簡単だと思います。

/**
 * Remove the output of the first gallery
 *
 * @param string $output
 * @param array $attr
 * @return string $output
 */
function wpse125903_remove_the_first_gallery( $output, $attr )
{
    // Run only once
    remove_filter( current_filter(), __FUNCTION__ );

    // Override the first gallery output        
    return '<!-- gallery 1 was here -->';   // Must be non-empty.
}

add_filter( 'post_gallery', 'wpse125903_remove_the_first_gallery', 10, 2 );

これにより、投稿の最初のギャラリーのみが削除されます。

2
birgire