0

ホームページを通常の投稿ページではなく静的ページに設定した WordPress サイト (2.6.2) があります。このページの ID は 2 であるため、WordPress テンプレートを次のように変更しましたwp_list_pages

<?php wp_list_pages('exclude=2&title_li=&depth=1' ); ?>

これは問題なく動作しますが、選択されたときにホームページが「点灯」しなくなりました (実際には、選択されているのは page_id 2 であり、メニューに表示されないためです)。これを回避する簡単な方法はありますか?

そうでない場合、大まかに言えば、これを回避する難しい方法は何ですか? 関数の独自のバージョンを作成しwp_list_pagesますか?

ありがとう!

4

2 に答える 2

3

フロントページとして静的ページを設定しても、質問の中心にあるメニューリンクが強調表示されません。

したがって、サーバー側で wp_list_pages 関数をカスタマイズ (ハッキング) することもできますが、その場合のクライアント側のオプションは次のとおりです。

jQuery ライブラリを使用して (便利なことに WP 2.2+ に付属しています)、次のように呼び出します。

wp_enqueue_script('jquery');

または独自のバージョンをロードします。

wp_enqueue_script( 'jquery', '/path/to/your/jquery.js', false, '1.2.1');

次に、テンプレートに次のような JavaScript を少し追加します。

if(window.location.href == 'http://www.example.com/'){ //checks for root path - "home" ('http://www.example.com/?p=7' or 'http://www.example.com/2008-10/7' will not match)
    jQuery('#nav > ul > li > a:first').addClass('current_page_item');
}

a:first部分は、メニューの最初のリンクがホーム/フロントページ リンクであると想定しています。そうでない場合は、href 値または位置で選択します。役職別は次のとおりです。

~~~~~~~~~~~~~~~

jQuery(jQuery('#nav > ul > li > a')[3]).addClass('current_page_item'); //add 'current_page_item' css class so menu item highlighting occurs

例:

<div id="ナビゲーション" >

<ul >
<li > <a >リンク 0 </a > </li >
<li > <a >リンク 1 </a > </li >
<li > <a >リンク 2 </a > </li >
<li > <a >リンク 3 </a > </li >
<li > <a >リンク 4 </a > </li >
<li > <a >リンク 5 </a > </li >
< /ul >

</div >


警告:

  1. メニュー div id の実際の名前を確認します (ここに#navが表示されます)
  2. ネストされた ul/li メニュー構造 (複数レベル) では、正しいa要素を適切に選択するために追加のコードが必要になります。
  3. メニュー リンクが変更される場合は、位置選択手法を使用しないでください。ホーム/フロント ページへのリンクの href 値など、別のフックを使用してください。
  4. if(window.location.href == ' http://www.example.com/ ')部分は、より多くのバリエーションが含まれる場合 (https、複数のサブドメインなど)、正規表現が必要になる場合があります。
于 2008-10-20T22:23:58.423 に答える
2

You can set a static page as the front page in the Administration > Settings > Reading panel after logging in as the administrator.

The Wordpress manual entry on this subject can be found here.

于 2008-10-20T21:06:42.557 に答える