CSS WordPress

WordPress のテーマを改造してみる(その2) - 記事を枠で囲む

2009年8月23日

WordPress のテーマによっては、以下の様にどこまでが一つの記事か見にくい場合が出てくる。

image

タイトルは大文字になっているし、よく見るとどこまでが一つの記事かわかるが、直感的には、ちょっと見にくい。

一つ一つの記事を、薄いねずみ色の枠線で囲って、もっと見やすいデザインにしてみる。

トップのページは、 index.php というファイルを呼び出す事で生成されている。
WordPress の記事は、データベースに格納されていて、一つ一つの記事は、ユーザーに見えるようなフラットファイルとしては存在していない。(HTMLをコリコリ手で書いていた時代しかしらなかったので、初めて知った時は、ちょっと驚きだった)

WordPress では、php の関数を使って、一つ一つの記事を DBから呼び出している。その部分のソースは・・・

<div id="content" class="narrowcolumn" role="main">

<?php if (have_posts()) : ?>

<?php while (have_posts()) : the_post(); ?>

<div <?php post_class(); ?> id="post-<?php the_ID(); ?>">
<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php printf(__('Permanent Link to %s', 'kubrick'), the_title_attribute('echo=0')); ?>"><?php the_title(); ?></a></h2>
<small><?php the_time(__('F jS, Y', 'kubrick')) ?> <!-- by <?php the_author() ?> --></small>

<div class="entry">
<?php the_content(__('Read the rest of this entry &raquo;', 'kubrick')); ?>
</div>

<p class="postmetadata"><?php the_tags(__('Tags:', 'kubrick') . ' ', ', ', '<br />'); ?> <?php printf(__('Posted in %s', 'kubrick'), get_the_category_list(', ')); ?> | <?php edit_post_link(__('Edit', 'kubrick'), '', ' | '); ?>  <?php comments_popup_link(__('No Comments &#187;', 'kubrick'), __('1 Comment &#187;', 'kubrick'), __('% Comments &#187;', 'kubrick'), '', __('Comments Closed', 'kubrick') ); ?></p>
</div>

<?php endwhile; ?>

<div class="navigation">
<div class="alignleft"><?php next_posts_link(__('&laquo; Older Entries', 'kubrick')) ?></div>
<div class="alignright"><?php previous_posts_link(__('Newer Entries &raquo;', 'kubrick')) ?></div>
</div>

<?php else : ?>

<h2 class="center"><?php _e('Not Found', 'kubrick'); ?></h2>
<p class="center"><?php _e('Sorry, but you are looking for something that isn&#8217;t here.', 'kubrick'); ?></p>
<?php get_search_form(); ?>

<?php endif; ?>

</div>

テーマによって、コードは異なるだろうが、大体同じような感じだと思われる。 (デフォルトのテーマでは↑の部分が、index.php のほぼ全てだ)

while  ~ endwhile までが、記事を一つ一つ呼び出して、出力していくループ・ルーチンだ。
ここに挟まれた部分で注目するのは

the_title() 記事のタイトルを表示
the_content() 記事の内容を表示

だ。 これらがある部分がひとつの記事を示している。

とすると、、、一つの記事を囲んでいる、class タグの始まりは、<div <?php post_class(); ?> ぽい。 ただ、ちょっと見慣れない書き方だ。
CSS では、

<div class=クラス名> クラス名のスタイルを適用したい部分 </div>

で、囲った部分に一つのスタイルを適用するのだが、 WordPress 2.7 では、class=クラス名の代わりに、post_class() を使った以下の書き方ができるようになったらしい。(WordPress.日本語内の解説記事)

<div post_class()> クラス名のスタイルを適用したい部分 </div>

post_class() を実行すると、 class=”クラス名” が代わりに出力される。初心者にはちょっととっつきにくくなったが、多分、ヘビーユーザー?には、これによって利便性が増していると思われる。
状況に応じていろいろな値を返すが、ここでは、post_class() を実行すると、class =”post” という文字列が返ってくるらしい。つまり個別の記事のスタイルを定義するクラスは、post という名前のクラスという事が割る。なので、 post というクラス名を css ファイル内で捜索する。

このpost クラスは、style.css に定義してあった。(css ファイル名は、テーマによって異なる。この場合は、デフォルトのテーマ名)

.post {
margin: 0 0 40px;
/*    text-align: justify; */
}

青字の部分に以下の様な記述を追加する。

.post {
margin: 0 0 40px;
padding: 16px;
border: 1px solid #bdccdc;

/*    text-align: justify; */
}

padding:   16px; 枠とその内容を16px だけ余白を空ける。
border: 1px solid  #bdccde; ソリッドな1px の線で、#bdccde(薄いねずみ色)の枠(border) を作る。

編集した style.css を元のファイルと置き換えてみる。
ひとつひとつの記事が線で囲われて見やすくできた。

image

記事の間の隙間は、同じ.post クラス内の margin で調整できる。

-CSS, WordPress

Copyright© エンジニアの何でもメモ帳 , 2024 All Rights Reserved.