html {
overflow: auto;
}
body {
overflow: hidden;
}
@media screen and (min-width: 600px) {
.site {
overflow: visible;
}
}
#example {
margin-right: -500%;
margin-left: -500%;
padding-right: 500%;
padding-left: 500%;
}
| ヘッダー | #masthead |
| グローバルメニュー | #site-navigation .main-navigation ※注 |
| フッター | #colophon |
グローバルメニューのデザインを指定しているセレクタは、上記の id や class 以外にもいくつもあります。メニューをどのようにカスタマイズしているかで、指定すべきセレクタが変わってくるようです。
特に Twenty Twelve のグローバルナビメニューは、上下に 1px のボーダーが引かれていますが、実は上記の 2 つのセレクタでは、このボーダーまで横に伸ばすことができません。
ボーダーも横に伸ばしたい場合は、以下のセレクタを、左右のマージン、パディングともに引き延ばす必要があります。
デフォルト状態のグローバルナビは、作成した固定ページへのリンクが順番に表示されるようになっています。1460 行目からの記述にマージンやパディングを追記すると、ボーダーも含めて横幅を広げることが可能です。
/* Minimum width of 600 pixels. */
@media screen and (min-width: 600px) {
/* 〜省略〜 */
.main-navigation ul.nav-menu,
.main-navigation div.nav-menu > ul {
border-bottom: 1px solid #ededed;
border-top: 1px solid #ededed;
display: inline-block !important;
text-align: left;
width: 100%;
margin-right: -500%;
margin-left: -500%;
padding-right: 500%;
padding-left: 500%;
}
}
カスタムメニューで独自のメニューを作成し、グローバルナビに適用させた場合は、上記のセレクタ以外にも以下のセレクタが使えます。
#menu-global-nav {
margin-right: -500%;
margin-left: -500%;
padding-right: 500%;
padding-left: 500%;
}
Twenty Eleven の記事でもお伝えしたように、基本的な考え方は変わりません。なので、別に Twenty Eleven でなくても Twenty Twelve でなくても使えるテクニックです。
ただ、Twenty Twelve の場合はデフォルトの CSS で影響で、うまくいかず、ちょっとした工夫が必要になります。
以下は上記設定の考え方になりますので、興味のある方はどうぞ・・・。
Twenty Eleven の場合と同じようにスタイルシートを記述した場合、グローバルメニューの部分がブラウザいっぱいに広がってくれません。以下のようにある範囲までしか広がらないのです。

その範囲はというと、どうやら【 .site 】というセレクタで指定されている部分のようです。
その原因はスタイルシートに記述されている【 overflow 】の値にありました。デフォルトでは以下のように記述されています。
/* =Media queries
-------------------------------------------------------------- */
/* Minimum width of 600 pixels. */
@media screen and (min-width: 600px) {
/* 〜省略〜 */
.site {
margin: 0 auto;
max-width: 960px;
max-width: 68.571428571rem;
overflow: hidden;
}
この【 overflow 】ははみ出た部分をどうするか、ということを指定しています。デフォルトの指定は【 hidden 】なので、はみ出た部分は非表示になります。つまりこれが原因で横に広がった部分が表示されず、サイトの範囲内に収まったように見えていたわけです。
この部分を表示させるには、【 overflow 】の値を【 hidden 】から【 visible 】へ変更する必要があります。これで、グローバルナビゲーションメニューも左右横にちゃんと広がってくれます。
というのがベターだと思います。
しかし、WordPress のデフォルトテンプレートである Twenty Eleven や Twenty Twelve など、初期設定のままだとトップページやアーカイブページでも全文表示なっているます。いちいち タグを挿し込むのも面倒くさい・・・。他のテンプレートでも同じようになっているかもしれません。
この記事では、条件分岐タグを使って全文表示と抜粋表示を使い分ける方法をご紹介します。
まず、簡単にWordPressの条件分岐タグについて説明しておきたいと思います。理屈はそんなに難しくないはずです。PHPを使っていますが、特に専門的な知識がなくても使えてしまう便利さがあります。(少なくともぼくはPHP、よく分っていません)
条件分岐タグの基本構造は・・・
というものです。簡単ですよね?これを実際のPHPのタグに合わせて見てみましょう。
<?php if ( 【条件1】 ) : ?> 【表示1】 <?php else : ?> 【表示2】 <?php endif; ?>
| もし | <?php if ( 【条件1】 ) : ?> |
| 【表示1】 | 任意のタグ |
| それ以外は | <?php else : ?> |
| 【表示2】 | 任意のタグ |
| 条件指定終わり | <?php endif; ?> |
といった感じです。あとは、これらを踏まえて指定したい条件と表示させたい内容のタグを埋め込んでいけばいいというわけです。
条件を複数指定したい場合は、【 || 】この縦2本のラインを挟めばOKです。例えば、「もし、【条件1】【条件2】【条件3】の場合は・・・」というような指定をしたい場合は以下のように指定します。
<?php if ( 【条件1】 || 【条件2】 || 【条件3】 ) : ?>
多分、抜粋表示をさせたいのはカテゴリーページやタグページなど、複数に渡るはずなので、この複数の条件指定を覚えておきましょう。
ちなみに、この線( → | )なんて呼ぶのか分りませんが、キーボードの右上にあるはずです。。。
さて、いよいよ実践です。今回は以下のように指定したいと思います。
| 抜粋表示 | トップページ(投稿一覧) アーカイブページ(archive.php) 検索結果一覧ページ(search.php) |
|---|---|
| 全文表示 | 個別投稿ページ(single.php) 固定ページ(page.php)など |
つまり、文章にしてみると、『もし、トップページ・アーカイブページ・検索結果エページの場合は抜粋表示にして、それ以外の場合は全文表示にしてね』となります。
ちなみに、アーカイブページとは、「カテゴリーページ」・「タグページ」・「作成別ページ」・「日付別ページ」の結果を全て含んでいます。なので、条件としてはアーカイブページを指定しておけばOKです。
全文表示と抜粋表示の切り替えを指定するためには以下のように記述します。
<?php if ( is_home() || is_archive() || is_search() ) : ?> <?php the_excerpt(); ?> <?php else : ?> <?php the_content(); ?> <?php endif; ?>
ちなみに、トップページを指定する WordPress の条件分岐タグは
is_home()
カテゴリーページを指定する条件分岐タグは
is_archive()
検索結果一覧ページを指定する条件分岐タグは
is_search()
です。
また、抜粋表示を示す WordPress のタグは
<?php the_excerpt(); ?>
全文表示を示すタグは
<?php the_content(); ?>
です。実際はスタイルシートの指定やその他の PHP が記述されていると思いますが、単純化するとこのようになっています。
ここからは Twenty Eleven、もしくは Twenty Twelve を元に解説していきます。条件指定の仕方は WordPress 共通していますので、お使いのテンプレートに合わせてカスタマイズしてみてください。
それでは、まずは content.php を開きましょう。Twenty Eleven は 35 行目、Twenty Twelve は 33 行目辺りから、コンテンツの表示方法についての記述があります(子テーマに複製してから作業してくださいね)。
<?php if ( is_search() ) : // Only display Excerpts for Search ?> <div class="entry-summary"> <?php the_excerpt(); ?> </div><!-- .entry-summary --> <?php else : ?> <div class="entry-content"> <?php the_content( __( 'Continue reading <span class="meta-nav">→</span>', 'twentyeleven' ) ); ?> <?php wp_link_pages( array( 'before' => '<div class="page-link"><span>' . __( 'Pages:', 'twentyeleven' ) . '</span>', 'after' => '</div>' ) ); ?> </div><!-- .entry-content --> <?php endif; ?>
元々の記述内容は、『もし、検索結果一覧ページなら抜粋表示にして、それ以外は全文表示にしてね〜』となっています。なので、単純に最初の
<?php if ( is_search() ) : // Only display Excerpts for Search ?>
の部分を
<?php if ( is_search() || is_home() || is_archive() ) : // Only display Excerpts for Search ?>
に変更すれば OK です。
簡単ですね。ぜひ試してみてください。
WordPress がバージョンアップして 3.5 になりました。それに伴って、新テンプレートの Twenty Twelve も登場。だいぶシンプルで無駄のないデザインになっています。ミニマルデザイン好きなので個人的には好きです。カスタマイズの方もおもしろくなりそうです。
Twenty Twelve も、以前 Twenty Eleven 同様、ブログの最新の投稿が一覧で表示されているページは各投稿が全文表示されてしまいます。厳密に言うと検索結果などの場合は抜粋表示されるようになっていますが、トップページの最新投稿では全文表示の記事が数記事ならぶとスクロールが非常に面倒になってしまいます。
トップページに最新記事一覧を表示させる際には抜粋表示されていた方がいいと思うので、カスタマイズ方法をメモしておきたいと思います。
条件分岐タグを使うとうまくいきました。
条件分岐タグとは、WordPress のタグのひとつで、「○○の場合は■■を表示して」のような指示を出すためのタグです。これを使う事によってトップページ(フロントページ)に記事全文が一覧表示されることはなくなり、抜粋表示ができるようになります。
変更を加えるテンプレートは【content.php】です。子テーマにコピーしてから編集してくださいね。
3 行目に以下のような記述があります。
<?php if ( is_search() ) : // Only display Excerpts for Search ?> <div class="entry-summary"> <?php the_excerpt(); ?> </div><!-- .entry-summary -->
これは、「もし検索結果なら・・・」という条件を示して、「その場合は【excerpt】、つまり抜粋で表示してね」という指示をしています。この条件を仮に【条件1】としておきます。
そして、その下に以下のようなタグを追記すると・・・
<?php elseif ( is_home() ) : ?> <div class="entry-summary"> <?php the_excerpt(); ?> </div><!-- .entry-summary -->
「もし、【条件1】でない場合は、こっちの条件を適用してね」という指示を出すことができます。同じように抜粋にするタグを埋め込んでいるので、「もし、条件1でない場合は、抜粋で表示してね」という意味になります。一応こちらの条件は【条件2】としておきましょう。
ここで指定している条件は、表示設定におけるフロントページの表示で【最新の投稿】を指定している場合のトップページや、【固定ページ】を指定している場合の投稿ページに反映されます。
これでトップページで投稿記事が一覧表示されている場合に抜粋記事として表示させることができます。そして、記事タイトルをクリックすると全文表示の個別投稿記事のページが表示されるようになります。
その条件を指定しているのは、先ほど【条件2】のタグを追記した後に書かれている【else】から始まる部分です。意味としては、「【条件1】でも【条件2】でもない場合は〜」ということで、この場合は全文表示などを指示しています。
ありがとうございます!
]]>