すみません。投稿のカテゴリを間違えました。
変更方法がわからないので・・このままですみません。
chosukeさん
使っているテーマやサイドバーの実装が分からないので、『Twenty Eleven』テーマでウィジェットを使って表示させている、という前提で。WordPressを始めたばかりとのことなので、プラグイン『Exec-PHP』を使った例を紹介します。
ウィジェットは「固定ページ」の代わりに「テキスト」を使います。
『Exec-PHP』を有効化させた後、テキストウィジェットに、Codex「wp_list_pages」のページに載っているコードをペースト、保存します。
<?php
if($post->post_parent)
$children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0");
else
$children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");
if ($children) { ?>
<ul>
<?php echo $children; ?>
</ul>
<?php } ?>
これで「固定ページ」ウィジェットと同じ表示になるかとおもいます。
そのうえで、上記コードを次のように修正します。
修正前:
<?php echo $children; ?>
修正後:
<?php
echo $children;
global $post;
$post = get_post($id=N); // N には表示させたい投稿のIDを記載
?>
<li><a href="<?php the_permalink();?>"><?php the_title(); ?></a></li>
『Exec-PHP』はテキストウィジェットや記事本文内でPHPコードを実行できる便利なプラグインです。反面、うっかりすると穴のあるコードを埋めることにもなるのでご留意ください。
teckingさん
ご親切にありがとうございます。プラグインなどの情報をきちんと伝えるべきでしたよね。
申し訳ありません。
プラグインは「All in One Sub Navi Widget」を使っています。
テーマは無料配布のテンプレートをカスタマイズしています。
リンクを張りたいのは、記事IDではなく、
カテゴリのトップとなります。
http:www/hogehoge/category/
のように。
sidebar.phpはこういうソースです。
<section id="sidebar">
<?php if(is_page()): ?>
<div id="primary" class="widget-area">
<?php dynamic_sidebar('primary-widget-area'); ?></div>
<!-- #primary end -->
<?php endif; ?>
<?php if(is_archive() ): ?>
<div id="secondary" class="widget-area">
<?php dynamic_sidebar('secondary-widget-area'); ?>
</div>
<!--#secondary end-->
<?php endif ?>
<?php if(is_single() ): ?>
<div id="secondary" class="widget-area">
<?php dynamic_sidebar('secondary-widget-area'); ?>
</div><!--#secondary end-->
<?php endif ?>
</section><!-- #sidebar end -->
ウィジェットはfunction.phpで制御しています。
本当はサイトをご覧いただきたいのですが、
商用で制作しているもののためアクセス制限をかけようとしたのですが、
うまくいかなかったのですみません。。
たとえば primary-widget-area で『All in One Sub Navi Widget』を使う場合、こんなコードでやってみてはどうでしょう?
ウィジェット部分のHTML文字列をいったん変数 $out に格納し、preg_replace() でカテゴリートップへのリンク・カテゴリータイトルを追記した後に出力する、という流れです。『All in One Sub Navi Widget』が、出力時に ul タグに sub_navi というCSSクラスを付記することを利用しています。
(やや強引な手法、かつざっくり検証しただけなのでご容赦を)
<?php
ob_start();
dynamic_sidebar('primary-widget-area');
$out = ob_get_clean();
$cat = get_category(N); // Nには追加したいカテゴリーのIDを記載
$str = '<a href="' . get_category_link($cat->cat_ID) . '">' . $cat->cat_name . '</a>';
echo preg_replace( '/(<ul class="sub_navi">)(.+?)(<\/ul>)/s', '$1$2<li>' . $str . '</li>$3', $out);
?>
teckingさん
何度もアドバイスいただきありがとうございます。
諸事情でテスト環境が変わって現在全データを引っ越し中です。
無事に終わりましたら検証させていただきます。
お返事が遅くなり申し訳ありません。