wordpress3.5を新規でインストールすると、管理ページから「リンク」が消えてしまった。(アップグレードだと消えない)あんまり使わない機能という事だろうか?
カスタムリンクを利用
解決方法は、「リンク」の代わりに「カスタムリンク」(外観→メニュー)を利用すれば、外部リンクでも内部リンクでも貼れる。
ただ、リンクターゲットをblankに(別ウィンドゥ)にできないのが不便。。。と諦めていた。
外観→メニューのページ上部「表示オプション」で解決できた
これの解決は、外観→メニューのページ上部「表示オプション」を開き、「詳細メニュー設定を表示」の部分の「リンクターゲット」にチェックを入れると、追加したメニュー毎に「リンクを新しいウィンドゥまたはタブで開く」にチェックできるようになる。
つまり、リンクターゲットを自由に設定できるようになるのだ。
デフォルトの機能にしておけば良いのに。。。
固定ページにリンク集を作りたいときのメモ
- 「リンク集」という名前のウィジェットエリアを作成
(functions.phpの「register_sidebar」記述の箇所を探して追加) - 固定ページに新規追加で、例えば「おすすめリンク」という名前のページを作成します。
- テンプレートの固定ページ(page.php)に、条件分岐するコードを記述します。
(おすすめリンクページのIDをセット)もし、表示しているページが「おすすめリンク」ページなら、
「リンク集」ウィジェットエリアの内容を表示という条件分岐です。
- cssを追加します
(page-widget-box)を好きなように装飾 - 外観→メニューで、「おすすめリンク」メニューを作成し、カスタムリンクを追加します。
- 上記の作業をすべて終えると、ウィジェットに「リンク集」という名前のウィジェットエリアができているので、その中に、ウィジェットの「カスタムメニュー」をドラッグ&ドロップして追加します。
メニューがプルダウンで選べるので「おすすめリンク」を選択します。※もちろん、管理画面から「リンク」が消えていなければ、ウィジェットの「リンク」または、「My link order」(プラグイン)を利用してもOKです。
下記のnameの部分は、日本語でダメな場合はローマ字で書いてください。
[php]
// リンク集 ウィジェットエリア.
register_sidebar( array(
‘name’ => __( ‘リンク集’),
‘id’ => ‘page-widget-box’,
‘description’ => __( ‘リンク集用ウィジェット’),
‘before_widget’ => ‘<div id="%1$s" class="%2$s">’,
‘after_widget’ => ‘</div>’,
‘before_title’ => ‘<h3 class="title">’,
‘after_title’ => ‘</h3>’,
) );
[/php]
page.phpのループ部分を下記のように記述します。
(ウィジェットエリアの名前は、fubctions.phpで、nameの部分に記述した通りに)
[php]
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<!–entry-content start–>
<div class="entry-content">
<?php if(is_page(‘「おすすめリンク」のページID’)): ?>
<div id="page-widget-box">
<?php dynamic_sidebar( ‘リンク集’ ); ?>
</div>
<?php the_content(); ?>
<?php else : ?>
<?php the_content(); ?>
<?php endif; ?>
</div>
<!–entry-content end–>
<?php endwhile; endif; ?>
[/php]
[css]
/*コンテンツ ページ ウィジェットエリア
————————————————————– */
#page-widget-box {
width:630px; /*ウィジェットエリアの幅*/
margin:0px auto 18px auto;
}
#page-widget-box li {
list-style:none;
margin:0px auto 0px auto;
}
#page-widget-box li ul {
margin:0px auto 18px auto;
}
#page-widget-box li ul li {
width:100%;
line-height:100%;
margin:0px auto 0px auto;
padding:6px 3px 6px 3px;
text-align:left;
border-bottom:1px dotted #3D0F0A;
}
[/css]