WordPressギャラリーの改造。
この記事は2012/11/05に公開され、1,456回読まれました。
WordPressのテーマ「sandbox」には、ギャラリーに問題があります。
- 画像のリンク先が「画像の記事」に固定されている。
- 表示順が正順に固定されていて「ランダム」表示できない。
これはテーマ内のfunctions.phpを読むと分かります。「function sandbox_gallery($attr) {」を検索して確認してください。
さらに「gallery」で検索すると
- // Registers our function to filter default gallery shortcode
- add_filter( ‘post_gallery’, ‘sandbox_gallery’, $attr );
という行が見つかります。「元のpost_galleryをsandbox_galleryで置き換えなさい」という意味ですね。
そこでこの行をコメントアウトしてしまいます。
- // Registers our function to filter default gallery shortcode
- //add_filter( ‘post_gallery’, ‘sandbox_gallery’, $attr );
「元のpost_gallery」は/wordpress/include/media.phpで定義されています。これはマルチファイル検索でgalleryを検索すれば見つかります。
これだけで本来のギャラリーの機能を取り戻せる…のですが、こちらはこちらで問題が。
なぜか大きなお世話とも思えるスタイルが決め打ちされているのです。
- if ( apply_filters( ‘use_default_gallery_style’, true ) )
- $gallery_style = “
<style type=’text/css’>
#{$selector} {
margin: auto;
}
#{$selector} .gallery-item {
float: {$float};
margin-top: 10px;
text-align: center;
width: {$itemwidth}%;
}
#{$selector} img {
border: 2px solid #cfcfcf;
}
#{$selector} .gallery-caption {
margin-left: 0;
}
</style>
<!– see gallery_shortcode() in wp-includes/media.php –>”;
ifで「use_default_gallery_style’, true」と確認していますので、「どこで既定のCSSを使うように設定しているのかな?」と探しても見つかりません。
これはfunctions.phpの中で
- add_filter( ‘use_default_gallery_style’, ‘__return_false’ );
と指定しなければなりません。
面倒ですし、細かい調整もできないため、media.phpよりfunction gallery_shortcode($attr) { 〜該当箇所〜 }をコピーしてfunctionsgallery.phpという名前をつけてテーマ内に保存します。
- 頭に<?php、最後に?>を入力する。
- <?phpの次の行にadd_shortcode(‘gallery’, ‘my_gallery_shortcode’);を入力する。
- function gallery_shortcode($attr) をfunction my_gallery_shortcode($attr) に変更する。
- 上記のスタイル指定箇所を削除する。
- style.cssで#galleryを自由に設定する。
例えばdl〜dtで出力されているHTMLをテーブル表記にすることもできます。
コメントする