WordPressのPluginsは数が有りすぎてどれを使っていいのか悩む事多々あります
欲しい機能でさがしてはみるのですが、他に不要な機能も付いていたりとか
日本語化されていなくて設定画面で自分が固まってたりとか( ´艸`)ププッ
Pluginsを使わずに済む物は自分で設置!そんなお話。

Pluginsを使わずに~で参考にさせていただいたサイト

総合

参考サイト

個別

参考サイト
    WEBLE
  • 1秒で誰でもできる WordPress のブログサイトでパンくずリストを表示する太陽系最強のコードを書いてみたよ
他にもGoogle検索で「wp プラグインを使わずに」で多数ヒットします

▲ この記事TOPへ

設置した物
ブログ表示物:パンくず、関連記事、ページ分割
内部的な物:#more-$id 削除、moreクリック後ページ先頭、投稿記事で部分的に実体参照

パンくず

functions.php に下記を追加
function get_breadcrumbs(){
	global $wp_query;
	if ( !is_home() ){
		// Start the UL
		echo '<ul class="breadcrumbs">';
		// Add the Home link
		echo '<li><a href="'. get_settings('home') .'">TOP</a></li>';
		if ( is_category() )
		{
			$catTitle = single_cat_title( "", false );
			$cat = get_cat_ID( $catTitle );
			echo "<li> &raquo; ". get_category_parents( $cat, TRUE, " &raquo; " ) ."</li>";
		}
		elseif ( is_archive() && !is_category() )
		{
			echo "<li> &raquo; Archives</li>";
		}
		elseif ( is_search() ) {
			echo "<li> &raquo; Search Results</li>";
		}
		elseif ( is_404() )
		{
			echo "<li> &raquo; 404 Not Found</li>";
		}
		elseif ( is_single() )
		{
			$category = get_the_category();
			$category_id = get_cat_ID( $category[0]->cat_name );
			echo '<li> &raquo; '. get_category_parents( $category_id, TRUE, " &raquo; " );
			echo the_title('','', FALSE) ."</li>";
		}
		elseif ( is_page() )
		{
			$post = $wp_query->get_queried_object();
			if ( $post->post_parent == 0 ){
				echo "<li> &raquo; ".the_title('','', FALSE)."</li>";
			} else {
				$title = the_title('','', FALSE);
				$ancestors = array_reverse( get_post_ancestors( $post->ID ) );
				array_push($ancestors, $post->ID);
				foreach ( $ancestors as $ancestor ){
					if( $ancestor != end($ancestors) ){
						echo '<li> &raquo; <a href="'. get_permalink($ancestor) .'">'. strip_tags( apply_filters( 'single_post_title', get_the_title( $ancestor ) ) ) .'</a></li>';
					} else {
						echo '<li> &raquo; '. strip_tags( apply_filters( 'single_post_title', get_the_title( $ancestor ) ) ) .'</li>';
					}
				}
			}
		}
		// End the UL
		echo "</ul>";
	}
}
表示させたい箇所に下記を追加 single.php 記事タイトルの上辺りとか
<div id="breadcrumbs"><?php get_breadcrumbs(); ?></div>
括りタグはお好きなのでOKです
上記の場合の表示
TOP ≫ カテゴリとか ≫ 現在開いている個別記事

↑の結果タグ↓
<div id="breadcrumbs">
<ul class="breadcrumbs">
<li><a  href="">TOP</a></li>
<li> ≫ カテゴリとか ≫ 現在開いている個別記事</li>
</ul>
</div>
スタイルシート
#breadcrumbs ul.breadcrumbs {
	list-style: none;
	padding: 0;
	margin: 0;
	font-size: 123.1%;
}

#breadcrumbs ul.breadcrumbs li {
	float: left;
	margin: 0 5px 0 0;
	padding: 0;
}

▲ この記事TOPへ

関連記事

表示させたい箇所に下記タグを追加 single.php 記事が有った場合の最後に追加しました
表示させたい箇所に
<div class="relatedentries">
<h3>関連する記事</h3>
<ul>
<?php
	$original_post = $post;
	$tags = wp_get_post_tags($post->ID);
	$tagIDs = array();
	if ($tags) {
		$tagcount = count($tags);
		for ($i = 0; $i < $tagcount; $i++) {
			$tagIDs[$i] = $tags[$i]->term_id;
		}
		$args=array(
		'tag__in' => $tagIDs,
		'post__not_in' => array($post->ID),
		'showposts'=>4,
		'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 { ?>
関連する記事は見当たりません…
<?php } } ?>
</ul>
<!-- / .relatedentries END --></div>
括りタグはお好きなのでOKです
上記の場合の表示
関連する記事
・1つ目
・2つ目

↑の結果タグ↓
<h3>関連する記事</h3>
<ul>
<li><a href="" rel="bookmark" title="1つ目">1つ目</a></li>
<li><a href="" rel="bookmark" title="2つ目">2つ目</a></li>
</ul>

該当記事が無い場合下記の文字が表示されます
関連する記事は見当たりません…
各タグにクラス属性等を付けてスタイルシートで装飾してください

▲ この記事TOPへ

ページ分割

*現在はページ分割2(下部で説明しています)を使用中です
functions.php に下記を追加
function pager() {
global $wp_rewrite;
global $wp_query;
global $paged;
$paginate_base = get_pagenum_link(1);
if(($wp_query->max_num_pages) > 1):
	if (strpos($paginate_base, '?') || ! $wp_rewrite->using_permalinks()) {
		$paginate_format = '';
		$paginate_base = add_query_arg('paged', '%#%');
	} else {
		$paginate_format = (substr($paginate_base, -1 ,1) == '/' ? '' : '/') .
	user_trailingslashit('page/%#%/', 'paged');;
	$paginate_base .= '%_%';
}
	$result = paginate_links( array(
		'base' => $paginate_base,
		'format' => $paginate_format,
		'total' => $wp_query->max_num_pages,
		'mid_size' => 5,
		'current' => ($paged ? $paged : 1),
	));
	echo '<ul class="pager">'."\n\t<li>".$result."</li>\n</ul>\n";
endif;
}
表示させたい箇所に下記を追加 index.php archive.php などなど
<?php pager(); ?>
上記の場合の表示
1 2 3 4 次へ≫

↑の結果タグ↓
<ul class="pager">
<li><span class='page-numbers current'>1</span>
<a class="page-numbers" href="">2</a>
<a class="page-numbers" href="">3</a>
<a class="page-numbers" href="">4</a>
<a class="next page-numbers" href="">次へ ≫</a></li>
</ul>
お好みのスタイルシートで装飾してください

ページ分割2

functions.php に下記を追加
function pager($pages = '', $range = 2){
	$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='pager'>";
		if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<a href='".get_pagenum_link(1)."' class='page-numbers'>&laquo;</a>";
		if($paged > 1 && $showitems < $pages) echo "<a href='".get_pagenum_link($paged - 1)."' class='page-numbers'>&lsaquo;</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 page-numbers'>".$i."</span>":"<a href='".get_pagenum_link($i)."' class='inactive page-numbers' >".$i."</a>";
			}
			}
		if ($paged < $pages && $showitems < $pages) echo "<a href='".get_pagenum_link($paged + 1)."' class='page-numbers'>&rsaquo;</a>";
		if ($paged < $pages-1 &&  $paged+$range-1 < $pages && $showitems < $pages) echo "<a href='".get_pagenum_link($pages)."' class='page-numbers'>&raquo;</a>";
		echo "</div>\n";
		}
	}
表示させたい箇所に下記を追加 index.php archive.php などなど
<?php pager(); ?>
上記の場合の表示
1 2 3 › » ←先頭1ページ目を表示している場合
« ‹ 2 3 4 5 6 › » ←ページが増えて4ページ目を表示している場合

↑4ページ目を表示している場合の結果タグ↓
<div class='pager'>
<a href="" class="page-numbers">&laquo;</a>
<a href="" class="page-numbers">&lsaquo;</a>
<a href="" class="inactive page-numbers">2</a>
<a href="" class="inactive page-numbers">3</a>
<span class='current page-numbers'>4</span>
<a href="" class="inactive page-numbers">5</a>
<a href="" class="inactive page-numbers">6</a>
<a href="" class="page-numbers">&rsaquo;</a>
<a href="" class="page-numbers">&raquo;</a>
</div>
お好みのスタイルシートで装飾してください

▲ この記事TOPへ


#more-$id 削除

functions.php に下記を追加
function custom_content_more_link( $output ) {
	$output = preg_replace('/#more-[\d]+/i', '', $output );
	return $output;
}
add_filter( 'the_content_more_link', 'custom_content_more_link' );

moreクリック後ページ先頭へ

タイトルのままですmore(続きを読む)をクリックすると個別記事の途中に飛びます
このままでもOKなのですがうちの場合は個別記事先頭へ飛ぶようにしました
functions.php に下記を追加
function remove_more_jump_link($link) {
	$offset = strpos($link, '#more-');
	if ($offset) {
		$end = strpos($link, '"',$offset);
	}
	if ($end) {
		$link = substr_replace($link, '', $offset, $end-$offset);
	}
	return $link;
}
add_filter('the_content_more_link', 'remove_more_jump_link');

投稿記事で部分的に実体参照

ソースコードを記載する時は「SyntaxHighlighter Evolved」を使用しているのですが
文章の途中でタグを入れたい場合もあったり・・・
そうゆう時は実体参照に変換してくるサイトで変換を行い記事に記載していました
AddQuicktag(プラグイン)で何とか実体参照できないかなと探してみたところ発見できました!
eclucifer blog:WordPress のクイックタグ追加プラグインで楽々実体参照
eclucifer blog さんの方法を試してみたのですが・・・登録すると勝手に実体参照されてしまい
記事で使用できませんでした><

dogmap.jp:WordPress 2.5.x のショートコードAPI
dogmap.jp さんの方法で難なくクリア!
ショートコードをfunctions.php に追加し、タグを AddQuicktag に登録するだけです
functions.php に下記を追加
function html_entity_encode_handler($atts, $content = null) {
	extract( shortcode_atts( array(
	'quote_style'   => ENT_COMPAT
	,'charset'       => get_settings('blog_charset')
	,'double_encode' => true
	), $atts ) );
	switch(strtoupper($quote_style)){
	case 'ENT_COMPAT':  case 'COMPAT':   $quote_style = ENT_COMPAT;   break;
	case 'ENT_QUOTES':  case 'QUOTES':   $quote_style = ENT_QUOTES;   break;
	case 'ENT_NOQUOTES':case 'NOQUOTES': $quote_style = ENT_NOQUOTES; break;
	default: $quote_style = ENT_COMPAT; break;
	}
	switch(strtoupper($double_encode)){
	case 'TRUE':   $double_encode = true;   break;
	case 'FALSE':  $double_encode = false;  break;
	default: $double_encode = false; break;
	}
	return htmlentities($content, $quote_style, $charset, $double_encode);
}
add_shortcode('encode', 'html_entity_encode_handler');
AddQuicktag に登録
[encode][/encode]
部分的に実体参照したい文字を括ります

後はまた設置した時に….〆(・ω・。)メモメモしていきます

2012/01/05 Wordpress
2012/01/19 , ,
Comments(0)
関連記事