最も必要とされている時に、信頼できるWordPressチュートリアルを。
WordPress入門ガイド
WPBカップ
2500万人以上
当社のプラグインを使用しているウェブサイト
16+
WordPress経験年数
3000+
専門家によるWordPressチュートリアル

WordPressメニュー項目に最初と最後のCSSクラスを追加する方法

ユニークにスタイル設定された最初と最後のメニュー項目を持つウェブサイトを見たことがありますか?それは偶然ではありません – それは巧妙なCSSの働きです。このテクニックは、お問い合わせページや特別オファーのような重要なリンクを強調することができます。

多くの読者は、カスタムクラスをメニュー項目に追加しようとしましたが、メニューを並べ替えるとスタイルが壊れることがわかりました。「最初」と「最後」にタグ付けされた項目はそれらの位置になくなり、メニューが不整合に見えます。

そのため、このガイドでは、後でメニュー項目を並べ替えても、メニュー項目に固定される .first および .last クラスを追加する方法を説明します。クラシックテーマ用のフィルターと、ブロックテーマを含むすべてのテーマ用の CSS セレクターの 2 つの方法を説明します。

WordPressナビゲーションメニュー項目に最初と最後のクラスを追加する方法

最初と最後のナビゲーション項目を異なるスタイルにする理由

ナビゲーションメニューの最初の項目と最後の項目にカスタムスタイルを追加する必要がある場合があります。これにより、サイトのお問い合わせフォームWooCommerceカートページへのリンクなど、重要なリンクを目立たせることができます。

この場合、最初と最後のメニュー項目にカスタムCSSクラスを追加するだけで済みます。しかし、メニューの順序を変更すると、カスタムスタイルが完全に壊れる可能性があります。

このため、代わりにフィルターを使用することをお勧めします。

このガイドでは、ナビゲーションメニューの最初と最後の項目をスタイル設定する方法を説明します。これにより、カスタムスタイル設定を壊すことなくメニューを再配置できます。使用したい方法に直接ジャンプするには、以下のクイックリンクを使用してください。

プロのヒント: ウェブサイトの任意のメニュー項目を強調表示したいですか?詳細については、WordPressでメニュー項目を強調表示する方法に関するガイドをご覧ください。

方法1:フィルターを使用して最初と最後のクラスを追加する(推奨)

注意: この方法は、クラシックなWordPressテーマでのみ機能します。ブロックテーマを使用している場合は、方法2に進んでください。

ナビゲーションメニュー項目をスタイル設定する最も簡単な方法は、テーマにフィルターを追加することです。

WordPressのチュートリアルでは、コードスニペットをテーマの functions.php ファイルに追加するように指示されることがよくあります。

最大の問題は、カスタムコードスニペットのわずかな間違いでもWordPressサイトが破損し、アクセスできなくなる可能性があることです。言うまでもなく、WordPressテーマを更新すると、すべてのカスタマイズが失われます。

そこで役立つのが WPCode です。

この無料プラグインを使用すると、サイトを危険にさらすことなく、WordPressにカスタムCSS、PHP、HTMLなどを簡単に追加できます。

最初に行う必要があるのは、 無料のWPCodeプラグインをインストールして有効化することです。詳細については、WordPressプラグインのインストール方法に関するステップバイステップガイドをご覧ください。

有効化したら、Code Snippets » Add Snippet に移動します。

WPCodeを使用してカスタムコードスニペットを追加する

ここで、「カスタムコードの追加」にマウスカーソルを合わせます。

表示されたら、「スニペットを使用」をクリックします。

WPCodeを使用してWordPressウェブサイトにカスタムコードスニペットを追加する方法

開始するには、カスタムコードスニペットのタイトルを入力します。これは、WordPressダッシュボードでスニペットを識別するのに役立つものであれば何でも構いません。

その後、「コードタイプ」ドロップダウンを開き、「PHPスニペット」を選択します。

WPCodeを使用してWordPressにカスタムPHPスニペットを追加する

次に、コードボックスに以下のPHPを追加できます。

function wpb_first_and_last_menu_class($items) {
    $items[1]->classes[] = 'first';
    $items[count($items)]->classes[] = 'last';
    return $items;
}
add_filter('wp_nav_menu_objects', 'wpb_first_and_last_menu_class');

その後、画面の上部までスクロールし、「Inactive」トグルをクリックして「Active」に変更する準備が整います。

最後に、「スニペットを保存」をクリックしてPHPスニペットを公開します。

WPCodeを使用してナビゲーションメニューにカスタムスタイルを追加する

これにより、最初のメニュー項目と最後のメニュー項目に.firstおよび.last CSSクラスが作成されます。これらのクラスを使用して、カスタムナビゲーションメニューでこれらの項目に固有のスタイルを適用できます。

これを行うには、WordPressウェブサイトに2番目のスニペットを追加する必要があります。まず、上記と同じ手順に従って、新しいカスタムコードスニペットを作成します。

その後、カスタムコードスニペットのタイトルを入力します。

次に、「コードの種類」ドロップダウンを開きますが、今回は「CSS スニペット」を選択します。

WPCode を使用して最初と最後のメニュー項目をスタイル設定する

このガイドでは、次の CSS フォーマットをコードボックスに追加することで、最初と最後のメニュー項目を太字にするだけです。

.first a {font-weight: bold;}

.last a {font-weight: bold;}

これが完了したら、「非アクティブ」トグルをクリックして「アクティブ」に変更します。

コードを使用してメニューにカスタムスタイルを追加する

最後に、「スニペットを保存」をクリックして、CSSスニペットをライブにします。

これで、ウェブサイトにアクセスすると、新しくスタイル設定されたメニューがライブで表示されます。

WPCodeを使用して作成されたWordPressメニューの例

方法2:CSSセレクターを使用して最初と最後の項目をスタイル設定する(すべてのテーマで機能します)

コードスニペットプラグインを使用したくない場合は、CSSセレクターを使用して最初と最後のメニュー項目をスタイル設定できます。ただし、この方法はInternet Explorerのような一部の古いブラウザでは機能しない場合があります。

これを念頭に置いて、さまざまなブラウザでWordPressウェブサイトをテストすることをお勧めします。

この方法に従うには、テーマのスタイルシートまたはWordPressテーマカスタマイザーの「追加CSS」セクションにコードを追加する必要があります。

これを初めて行う場合は、WordPressサイトにカスタムCSSを簡単に追加する方法に関するガイドをご覧ください。

最初の手順は、テーマのstyle.cssファイルを編集するか、外観 » カスタマイズに移動して「追加CSS」をクリックすることです。

WordPressテーマカスタマイザー

その後、次のコードスニペットをサイトに追加してください。

ul#yourmenuid > li:first-child { }
ul#yourmenuid > li:last-child { }

‘yourmenuid’をナビゲーションメニューのIDに置き換える必要があることに注意してください。

セレクターの「first-child」と「last-child」は、親の最初の子と最後の子を選択します。これらはナビゲーションメニューの最初の項目と最後の項目です。

たとえば、このコードを使用して、WordPressブログの最初のナビゲーションメニュー項目と最後のナビゲーションメニュー項目を太字にしました。

ul#primary-menu-list > li:first-child a {
    font-weight: bold;
}
ul#primary-menu-list > li:last-child a {
    font-weight: bold;
}
CSSセレクターを使用して最初と最後のメニュー項目を異なるスタイルで設定する

WordPressブロックテーマを使用している場合、WordPress管理画面にテーマカスタマイザーが表示されません。テーマカスタマイザーにアクセスするには、ブラウザで次のURLを入力する必要があります。

https://yourdomainname.com/wp-admin/customize.php

ドメインをウェブサイトのドメイン名に置き換えてください。

その後、以前のように「追加CSS」タブを開き、次のコードを挿入します。メニューIDを追加する必要がないため、コードの見た目が少し異なることに注意してください。

li:first-child a,
li:last-child a {
    background-color: black;
    border: none;
    color: white !important; /* Ensures the color white is prioritized */
    padding: 15px 32px;
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-size: 16px;
    margin: 4px 2px;
    cursor: pointer;
    border-radius: 12px;
}

必要に応じてコードを自由にカスタマイズしてください。以下の例では、最初と最後のリンクをボタンにしました。

このようになります:

最初と最後のナビゲーションリンクのスタイリングのために、ブロックテーマにカスタムCSSを挿入する

このチュートリアルがお役に立ち、WordPressナビゲーションメニューに.firstおよび.lastクラスを追加する方法を学べたことを願っています。また、WordPressで垂直ナビゲーションメニューを作成する方法に関する記事や、WordPressサイトでドロップダウンメニューを作成する初心者向けガイドもご覧ください。

この記事が気に入った場合は、WordPressのビデオチュートリアルのために、YouTubeチャンネルを購読してください。また、TwitterFacebookでも私たちを見つけることができます。

開示: 当社のコンテンツは読者によってサポートされています。これは、一部のリンクをクリックすると、手数料が発生する可能性があることを意味します。WPBeginnerがどのように資金調達されているか、なぜそれが重要なのか、そしてどのように私たちをサポートできるかを確認してください。こちらが当社の編集プロセスです。

究極のWordPressツールキット

無料のツールキットにアクセスしましょう - すべてのプロフェッショナルが持つべきWordPress関連の製品とリソースのコレクションです!

読者とのインタラクション

19 CommentsLeave a Reply

  1. 子メニューでも機能するようにコードを少し変更しました。

    function wpb_first_and_last_menu_class($items) {

    foreach($items as $k => $v) { $parent[$v->menu_item_parent][] = $v; }

    foreach($parent as $k => $v) { $v[0]->classes[] = 'first'; $v[count($v)-1]->classes[] = 'last'; }

    return $items;

    }

    add_filter(‘wp_nav_menu_objects’, ‘wpb_first_and_last_menu_class’);

  2. この素晴らしいコードをありがとうございます…

    子メニューを先に、そして最後の項目はどうですか?
    親メニューにのみ適用されました。

    子の最後の項目について何かアイデアはありますか?

  3. Anyone have any tip about use add_filter(”); for wp_nav_menu using STARKERS?
    can’t make it works :( JS and CSS are fine to do that, it is just frustrating to don’t be able to fix it from the back…
    thanks to share anyway!!

  4. functions.php への他のいくつかの追加と合わせて試したところ、サブメニュー内にある場合にメニュー項目を最初または最後のメニュー項目としてタグ付けすることに失敗しました。これに対する修正があると素晴らしいです!

  5. 素晴らしい!これは特に興味深いですね。なぜなら、メニュー項目を2つ以上分類する必要があるからです…
    これで分かりました!

    ありがとう

  6. これ、ありがとうございます!もし見落としていたらごめんなさい。このクラスによって作成されるナビゲーションの違いを見るためのメニュー例はありますか?重ねて感謝いたします!

    • クライアントのために設計したサイトはまだ公開されていません。しかし、主な理由は、最初のメニュー項目の左側に境界線が必要だったからです。他のすべての項目には、特定のパディングとマージンを持つ右側の境界線要素がありました。最後のクラスを使用して、右側のマージンと右側の境界線を削除しました。必要がなかったためです。ラップコンテナに当たっていました。視覚化できることを願っています。

      管理者

Leave A Reply

コメントいただきありがとうございます。すべてのコメントは、コメントポリシーに従ってモデレーションされ、メールアドレスは公開されません。名前フィールドにキーワードを使用しないでください。個人的で意味のある会話をしましょう。