SOFTELメモ

Softel Inc.

【WordPress】リンクの並び順を自由に変更する

問題

WordPressのリンクの並び順って、細かく制御できないの?名前順じゃなくて、これは上、これは下って自由に並べたいんだけど。

評価順だと10段階しかないから、10個以上あるとききちんと設定できないし…

答え

プラグイン等で対応する方法もあるが、素のWordPressでもできる。

ソースに以下の記述がある。

switch ( $orderby ) {
	case 'length':
		$length = ", CHAR_LENGTH(link_name) AS length";
		break;
	case 'rand':
		$orderby = 'rand()';
		break;
	case 'link_id':
		$orderby = "$wpdb->links.link_id";
		break;
	default:
		$orderparams = array();
		foreach ( explode(',', $orderby) as $ordparam ) {
			$ordparam = trim($ordparam);
			$keys = array( 'link_id', 'link_name', 'link_url', 'link_visible', 'link_rating', 'link_owner', 'link_updated', 'link_notes' );
			if ( in_array( 'link_' . $ordparam, $keys ) )
				$orderparams[] = 'link_' . $ordparam;
			elseif ( in_array( $ordparam, $keys ) )
				$orderparams[] = $ordparam;
		}
		$orderby = implode(',', $orderparams);
}

link_notesで並び替えできるようだ。

なので、管理画面では、リンクの「メモ」に、数字やコードを登録し、

テーマ側では以下のように、link_notes順で取得する。

$links = get_bookmarks('orderby=link_notes');
foreach ($links as $k => $v) {
	echo '<li><a href="' . $v->link_url . '">' . $v->link_name . '</a></li>';
}

注意する点としては、数値順ではなく、辞書順となるので、数字なら0001,0002,0003…と登録したり、a10,a20,a30,b10,b20,b30,b40…のようなコードをつけるとよい。

メモ

マニュアル(リファレンス)とソースや、ソースのコメントの記述が一致しないので、今後どうなるかは不明である。

関連するメモ

コメント