WordPressでPHPを使って関連記事を表示する

Posted on October 31st, 2010.

このブログの個別記事では、Linkwithinというサービスを使って関連記事をサムネイル付きで表示しています(一部、普通のリストになってしまう記事もある)。ですが、このLinkwithin、何を基準に関連記事を表示しているのかイマイチ分からないので、個別記事のコメントフォームの下にこっそりと関連記事をPHPを使って表示させてみました。記事に付けられているタグを基準にしています。6行目の「’showposts’=>10」というのが表示件数です。まだ試験中なので変な部分があっても気にしないで下さい。
※タグが付けられていない記事は「この記事に関連するかもしれない記事」っていうh3しか表示されない…。誰か助けて下さい。

<div class="post">
	<h3>この記事に関連するかもしれない記事</h3>
	<ul>
		<?php $tags = wp_get_post_tags($post->ID);
		if ($tags) { $first_tag = $tags[0]->term_id;
		$args=array( 'tag__in' => array($first_tag), 'post__not_in' => array($post->ID), 'showposts'=>10, 'caller_get_posts'=>1 );
		$my_query = new WP_Query($args);
	
		if( $my_query->have_posts() ) {
		while ($my_query->have_posts()) : $my_query->the_post(); ?>

		<li>
			<a href="<?php the_permalink();?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a>
		</li>

	<?php endwhile; wp_reset_query(); ?>
	<?php } else { ?>
	<p>関連する記事は見当たりませんでした…。</p>
	<?php } } ?>
	</ul>
</div>
新しいclassを割り当てるのが面倒だったのでclass=”post”を流用。細かい事は気にしない。

WordPressにプラグイン無しでページネーションを設置する(拡張版)

Posted on October 21st, 2010.

コリスさんのブログに「WordPressにプラグイン無しでページネーションを設置する方法」という記事が上がっていた。以下、WordPressにプラグイン無しでページネーションを設置する方法の拡張版。忘れないためにメモ。

PHP


テーマファイル内の「fuction.php」に以下をコピペ。
function pagination($pages = '', $range = 4)
{
     $showitems = ($range * 2)+1;  
 
     global $paged;
     if(empty($paged)) $paged = 1;
 
     if($pages == '')
     {
         global $wp_query;
         $pages = $wp_query->max_num_pages;
         if(!$pages)
         {
             $pages = 1;
         }
     }   
 
     if(1 != $pages)
     {
         echo "<div class=\"pagination\"><span>Page ".$paged." of ".$pages."</span>";
         if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<a href='".get_pagenum_link(1)."'>&laquo; First</a>";
         if($paged > 1 && $showitems < $pages) echo "<a href='".get_pagenum_link($paged - 1)."'>&lsaquo; Previous</a>";
 
         for ($i=1; $i <= $pages; $i++)
         {
             if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems ))
             {
                 echo ($paged == $i)? "<span class=\"current\">".$i."</span>":"<a href='".get_pagenum_link($i)."' class=\"inactive\">".$i."</a>";
             }
         }
 
         if ($paged < $pages && $showitems < $pages) echo "<a href=\"".get_pagenum_link($paged + 1)."\">Next &rsaquo;</a>";
         if ($paged < $pages-1 &&  $paged+$range-1 < $pages && $showitems < $pages) echo "<a href='".get_pagenum_link($pages)."'>Last &raquo;</a>";
         echo "</div>\n";
     }
}

CSS


CSSはお好みで。下記はサンプル。
.pagination {
clear:both;
padding:20px 0;
position:relative;
font-size:11px;
line-height:13px;
}
 
.pagination span, .pagination a {
display:block;
float:left;
margin: 2px 2px 2px 0;
padding:6px 9px 5px 9px;
text-decoration:none;
width:auto;
color:#fff;
background: #555;
}
 
.pagination a:hover{
color:#fff;
background: #3279BB;
}
 
.pagination .current{
padding:6px 9px 5px 9px;
background: #3279BB;
color:#fff;
}

設置


テーマファイルへの設置。
<?php if (function_exists("pagination")) {
    pagination($additional_loop->max_num_pages);
} ?>
これでOK。

HTML5にしてみたけど…

Posted on October 17th, 2010.

(※僕のWeb知識は全て独学なので間違ってても怒らないで下さい)

ホームブログをHTML5にしてみた…けど…何か自信が無い。というかそもそも合ってるのかどうかすら怪しい。ソースもInvalidだし(前からだけど)、Chromeでしか確認してない…。隅から隅まで触ると日が暮れてしまいそうなので、ちょろっとしかやってません…。取り合えずWordPressのソースで変更したのは以下の点。

文書型宣言

今までは
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
だったんですけどこれを
<!DOCTYPE html>
に変更。

文字コード宣言

<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
ってのを
<meta charset="<?php bloginfo('charset'); ?>" />
に変更。

IE

header.phpのhead要素内でCSSより先にhtml5shivを読み込む。
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->

CSS

style.cssとかにHTML5の要素を追加。
navとかsectionとか。

エラー?

ホームのJavaScriptでエラーが出たり、このブログでも何かレイアウトが崩れたりして(原因不明)、無理やり修正してる感じです。何かもう元に戻すの面倒だしこのままでいいやw

ソースを修正

で、後はちょろちょろっとHTMLを修正してHTML5っぽくしてあげれば終わり。
あぁ、適当…orz
まぁHTML5の体験って意味では良いかな別に。

というか、こんな事よりもValidなソースが書きたい…。

1