Wonderful! WordPress

ページネーション(ページャー)を作り直してプラグイン

Page No.3

あとは実際に起動したりする関数部分。

<?php
//class の読み込み
$simplistic_page_navi_start = new Simplistic_Page_Navi_List();

//↓管理画面のメニューにオプション設定ページを登録する処理
add_action( 'admin_menu', array( $simplistic_page_navi_start, 'splcpn_add_menu' ) );

//↓ページャを表示するメインとなる関数
function splcpn_echopager(  $dir = 0 ) {
	global $simplistic_page_navi_start;

	$args = array();
	if ( func_num_args() > 1 ) {
		$args = func_get_args();
		$args = $args[1];
		$simplistic_page_navi_start->splcpn_echopagelist( $dir, $args );
	} else {
		$simplistic_page_navi_start->splcpn_echopagelist( $dir );
	}

}

//↓テンプレートに指定してスタイルシートを登録する関数
function direct_splcpn_style( $dir = 0 ) {
	global $simplistic_page_navi_start;
	$simplistic_page_navi_start->template_splcpn_style( $dir );
}

//プラグインを無効化した時にオプションを消去する場合
//register_deactivation_hook( __FILE__, array( 'Simplistic_Page_Navi_List', 'at_uninstall' ) );

//アンインストールした時にオプションを消去する場合
/*
アンインストール時にデータベースに保存してあるオプション値を削除するための以下の関数は、
php7ではいずれ廃止されるであろう手法とのことで、
v3.0 においてuninstall.phpファイルを使用する方法に変更。
よって実際には以下はすでに使用しておらず削除してしまっています。
/*if ( function_exists('register_uninstall_hook') ){
	register_uninstall_hook( __FILE__, array( 'Simplistic_Page_Navi_List', 'at_uninstall' ) );
}*/
?>
PHP
CopyExpand

そして上述したようにアンインストール時にデータベースに保存してあるオプション値を削除する手法はuninstall.php ファイルを使用する方法へと変更しています。
そのuninstall.php の中身は以下の通り。ただこれだけ。
それにしても実にシンプルです。なぜはじめからこちらの方法にしなかったのか?なぞです・・・!

<?php
	// if uninstall.php is not called by WordPress, die
	if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
	    die;
	}

	$option_name = 'splcpn_options';

	delete_option( $option_name );

	// for site options in Multisite
	delete_site_option( $option_name );

?>
PHP
CopyExpand

コードは以上です。

・・・
つかいかたなど

プラグインのインストールはダウンロードしたファイルを解凍したら、ファイルが入っている直の親フォルダごとWordPress のプラグインフォルダにアップロードして、管理画面にて有効化する。必要であればオプションなどをいじってみると。
そして、テンプレートの中で表示させたいところに下記のごとく書いて関数を呼び出してください。

<?php
	if ( function_exists( 'splcpn_echopager' ) ) {
		splcpn_echopager( 1 );
	}
?>
PHP
CopyExpand

この時に引数としてひとつ、値を1として渡すと、
<nav id="toppagelink"><div class="wp-pagenavi">...
となり、0または省略する(デフォルト値が0なので引数がこれだけのときは省略可)と以下のようになります。
<nav id="bottompagelink"><div class="wp-pagenavi">...
その他のパラメータ(オプションと同じ)を渡す時は配列にして第二引数として渡します。第一引数を0でも忘れずに。以下は指定できる全ての項目が書いてありますが、実際には指定したい必要な項目だけを書きます。指定したものだけがオプション値に上書きされます。

<?php
	if ( function_exists( 'splcpn_echopager' ) ) {
		$args = array(
			'reverse' => '0', // リストの並び方 0:通常の左から 1:逆順で右から
			'above' => '7', // この数値より全ページ数が多い時にダイレクトジャンプのインプットボックスを表示、 default:7
			'minimum_unit' => '1', // 0:必要最小限の要素のリスト 1:通常のフルリスト
			'adjacent_num'=> '3',// 現在のページに隣接する前後の番号ページの表示数、片側だけの数値を指定 1から5
			'larger_page'=> '3',// ページ数が多い時に表示する10の倍数ページの数を指定、片側だけの数値を指定 0から5
			'top_label' => 'Top',
			'last_label' => 'Last',
			'connection_str'=>'~',// 10の倍数ページを表示したときなどの離れたページの間に表示する文字、3文字.
			'div_id'=>'pagenavilist',// 親タグ<div>のID属性の文字列.
			'font_size'=>'0',//フォントサイズ指定. -10~10, 0を指定することで無効.
			'top_text_align'=>'0',// 最外の親タグである<nav>のid=\"toppagelink\"のtext-align設定。  0 : disable, 1:left, 2: right, 3:center.
			'top_margin'=>'',// Margin of id="toppagelink" of "nav" tag. 空で無効、 top:right:bottom:left のように数字を:で区切った書式で入力。cssの書式と同様で省略した書き方が可能。
			'bottom_text_align'=>'0',// 最外の親タグである<nav>のid=\"bottompagelink\"のtext-align設定。  0 : disable, 1:left, 2: right, 3:center.
			'bottom_margin'=>'',// 最外の親タグである<nav>のid=\"bottompagelink\"のmargin設定。\"top_margin\"と同様。
			'distant_num'=>'3',// 現在のページが最初か最後に寄っている時など残りの間隔が広い時に表示する100の位のページの数。
			'max_page_num'=>$wp_query->max_num_pages,// 全ページ数を指定。
		);
		splcpn_echopager( 0, $args );
	}
?>
PHP
CopyExpand

パラメータの最後の'max_page_num'に関しては、これはオプション値ではありません。
これに関しては、たとえば、固定ぺージにおいてWP_Queryを使って特定のカテゴリとか投稿タイプとかの一覧をとるなどした場合に、$wp_query->max_num_pagesに値が無い場合があり、その場合にページネーションが表示されなくなります。何らかの方法で全ページ数が得られるはずですから、その値をこのパラメータで指定してやれば機能するようになります。
「wordpress 固定ページ ページネーション」などで検索すれば、色々とやり方が得られると思います。

あと、ページによって背景色を変えているなど、それに合わせてページリストの色も変えたいというような場合なんかに、ページによって読み込ませるスタイルシートを変更することが出来ます。
その場合は、オプションの"Load style sheet"の項目を0に設定し(これをしないと無視されます)、テンプレートheader.phpのwp_head ()タグより前で"direct_splcpn_style"関数を呼び出してください。
例えば、以下のようにすれば乱数によりランダムにスタイルシートを変更しています(デフォルトのスタイルシートは1~6で指定できます)。

<?php
	$splcpn_num = rand( 1, 6 );
	direct_splcpn_style( $splcpn_num );
	wp_head();
?>
PHP
CopyExpand

ちなみにこんな感じ。
pagenavigation

Sanbanse Funabashi

Top

スクロールさせるか画像をクリックすると元に戻ります。