【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…のようなコードをつけるとよい。
コメント