ぬじろぐ

配布とフレンドに全力で寄りかかるソシャゲ日記

抜粋記事に続きを読むリンクをつける

アイキャッチ画像つけられるんだよねーと、自動でアイキャッチ画像を生成してくれるプラグインを入れてみたらレイアウトがとんでもないことになったでござる。
具体的には、Wordpressデフォテンプレの「Twenty twelve」は記事全文を表示するスタイルなのだけれど、アイキャッチ画像つけると記事タイトルの上に原寸で表示されるんだよね。
これ、本文中にある画像から自動でアイキャッチを生成するプラグインと併用すると同じ画像が2枚連続で表示されるわ邪魔臭いわアイキャッチの意味ないわで三重苦なのです。
とりあえず応急処置としてアイキャッチを表示させるタグだけコメントアウトして表示を戻したのですが、この機会に少しテンプレートの改造をしてみようかと。

とりあえずやりたいこと。

  • パンくずリストがないので付けたい
    • これは簡単にできます
  • 記事全文表示なので、これをアイキャッチ+抜粋表示にしたい
  • でも先頭のお知らせ記事だけは全文表示したい
    • トップページに固定記事+最新の記事数件表示にする
    • 抜粋記事の末尾に「続きを読む」リンクをつける

パンくずリストを追加

なるべくプラグインを使いたくなかったのでタグで対応。
ここで紹介されているのをそのまま貼り付けでOKでした。
http://www.imaginationdesign.jp/blog/wordpress/1425/

もうちょっと工夫して、ヘッダーにまるごと突っ込んでIfで切り替えするように設定。

<div class="breadcrumbs">
<?php if ( is_page() || is_attachment() ) : ?>
<!&#8211; 固定pageの場合 &#8211;>
<a href="<?php echo get_option(‘home’); ?>">HOME</a>&nbsp;>&nbsp;</li>
<?php foreach ( array_reverse(get_post_ancestors($post->ID)) as $parid ) { ?>
<a href="<?php echo get_page_link( $parid );?>" title="<?php echo get_page($parid)->post_title; ?>">
<?php echo get_page($parid)->post_title; ?></a>&nbsp;>&nbsp;
<?php } ?>
<?php the_title(); ?>
<?php elseif ( is_single() || is_archive() ) : ?>
<!&#8211; ブログの場合 &#8211;>
<?php $post = $posts[0]; // Hack. Set $post so that the_date() works. ?>
<a href="<?php echo get_option(‘home’); ?>">HOME</a>&nbsp;>&nbsp;</li>
<?php $cat = get_the_category(); echo get_category_parents($cat[0], true, ‘&nbsp;>&nbsp;’); ?>
<?php the_title(); ?>
<?php endif; ?>
</div>

→固定ページの時は固定ページ用のタグ、ブログはブログ用のタグを表示
HOMEにも出ちゃうんですが、これはHOMEも固定ページ(page.php)を使ってるからで、違う名前の専用ページを用意すれば消える…はず…

もしくはここにあるタグを貼り付けでいけました。
http://blog.playunderworld.com/web/how-to-breadcrumbs-in-wordpress/
例にあるのそのままではスタイルシートが反映されないみたいなので、functions.phpに追記→8行目の

<ul><ul class="breadcrumbs">

に書き換えて、スタイルシートのほうに

display:inline;

を入れてやると横並びになります。
ヘッダーにタグを入れると、いちいち各ページを編集しなくても大丈夫。

記事を抜粋表示にする

content.phpを以下のように編集。

/* フロントページ、トップページ、アーカイブ表示、検索結果は抜粋表示 */
<?php if ( is_front_page() || is_home() || is_archive() || is_search() ) : ?>
	<?php the_excerpt(); ?>
/* それ以外のページは全文表示 */
<?php else : ?>
	<?php the_content(); ?>
<?php endif; ?>

…というところまで調べて、わざわざ固定ページに最新記事を表示しなくても、ブログの1ページ目だけ全文表示、2ページ目以降は抜粋…にしてもいいと思ったんだけど、その場合は

/* ホームの1pは全文表示 */
<?php if ( is_home() && !is_paged() ) : ?>
	<?php the_content(); ?>
/* ホームの2p以降、アーカイブ表示、検索結果は抜粋表示 */
<?php else ( is_home() || is_archive() || is_search() ) : ?>
	<?php the_excerpt(); ?>
/* それ以外のページは全文表示 */
<?php else : ?>
	<?php the_content(); ?>
<?php endif; ?>

これでいいのかな。

もっと単純に、「先頭に固定」記事だけ全文表示であとは抜粋とか…これが一番簡単かな。

/* ホーム記事(先頭に固定は除外)、アーカイブ表示、検索結果は抜粋表示 */
<?php if ( is_home() || is_archive() && !is_sticky() || is_search() ) : ?>
	<?php the_post_thumbnail(); ?>
	<?php the_excerpt(); ?>
/* それ以外のページは全文表示 */
<?php else : ?>
	<?php the_content(); ?>
<?php endif; ?>

アイキャッチをサムネイルサイズにしたいので、functions.phpも編集。
set_post_thumbnail_size( 624, 9999 )
の数字を変えました。デフォルトが9999になってるのは、「横のサイズに合わせた比率で縮小するよ」ってことみたいです。
size( width(px), height(px), true )
と書くと、指定のサイズで画像を切り抜き。

// This theme uses a custom image size for featured images, displayed on "standard" posts.
	add_theme_support( 'post-thumbnails' );
	set_post_thumbnail_size( 120, 120 ); // Unlimited height, soft crop
}

参考:http://presentnote.com/how-to-use-conditional-tags-to-excerpt/
参考:http://webdesignrecipes.com/wordpress-conditional-tags-and-custom-post-type/

抜粋記事の末尾に「続きを読む」リンクをつける

以下をfunctions.phpに追記。場所はどこでも可

/* 記事抜粋+「続きを読む」リンク */
function new_excerpt_more($more) {
return ' ... <br><a class="more" href="'. get_permalink() . '">続きを読む</a>';
} add_filter('excerpt_more', 'new_excerpt_more');

参考:http://webdesignrecipes.com/wordpress-customize-with-functions-php/

あとは固定ページサイドバーに子ページ一覧を出したいんだけど…
この辺が参考になるかも。
参考:http://tenman.info/labo/wp_myself/2009/04/15/%E3%82%B5%E3%82%A4%E3%83%89%E3%83%90%E3%83%BC%E3%81%AB%E8%A6%AA%E3%83%9A%E3%83%BC%E3%82%B8%E3%80%81%E5%AD%90%E3%83%9A%E3%83%BC%E3%82%B8%E3%80%81%E5%AD%AB%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%BB%E3%83%BB/

http://www.junyx.net/wordpress/2007/189

しかし何気にはてなダイアリーって便利ですね。(はてなブログ
この「ソースコードを整形して表示」みたいなのも、普通はプラグイン入れたり自分でコード書いたりしなくちゃいけないんだけど、はてななら標準でついてるし。