wordpress

WordPressのメニューをおもしろくしてみた

投稿日:

トグルメニュー

 

 

トグルメニュー(アコーディオンメニュー)の準備

 

WordPressのテーマに子テーマを作って、

そこで変更や追加をした方が安心安全なので以下の作業は子テーマを使って行いたいと思います。

 

functions.phpでオリジナルのメニューを作れるようにする

 

以下を子テーマの『functions.php』に書き込む

『functions.php』はあらかじめ作成しておきます。

//オリジナルメニュー
register_nav_menus( array(
'sub_menu' => 'カスタムサブメニュー',
'slide_menu' => 'カスタムスライドメニュー'
) );

一応、二つ作ってみました。

 

カスタムスライドメニュー用のファイルを作成

 

別途ファイルを作成しなくてもできますが、今回はわかりやすくファイルを作ってみました。

 

子テーマに『slide-menu.php』というファイルを作ってアップロードします。

アップロード方法は、『Adobe Dreamweaver』や『サーバーのFTP』を利用することで簡単にできます。

それでは、以下を記述して保存します。(全く同じじゃなくてもOKです)

 

<!-- スライドメニュー -->

<div class="suma">

<div class="nav-toggle">
<span class="nav-toggle-icon"></span>
<span class="nav-toggle-icon"></span>
<span class="nav-toggle-icon"></span>
</div>

<div class="slide-container">
<?php

$custom_slide_menu = array(
'container' => 'nav',
'container_class' => 'slidemenu',
'theme_location' => 'slide_menu',
'link_before' => '<span>',
'link_after' => '</span>'
);

if ( has_nav_menu( 'slide_menu' ) ) : ?>
<div id="menubox">
<?php wp_nav_menu( $custom_slide_menu ); ?>
</div>

<?php endif; ?>
</div>
</div>

 

カスタムスライドメニューファイルの呼び出し

 

上記で作った『slide-menu.php』を『header.php』で読み込みたいと思います。

 

以下を読み込みたい場所に記述してください。

 

<?php get_template_part( 'slide-menu' ); //スライドメニュー ?>

 

メニューを作成

 

WordPress管理メニューの『外観』→『メニュー』を開くと以下のような画面になると思います。

『メニュー項目を追加』から自分が作った固定ページなどを選択してメニューに追加します。

メニュー名は、slide_menu

メニュー設定は、カスタムスライドメニュー

最後に保存してください。

カスタムスライドメニュー

 

 

以上で、オリジナルのメニューが設置されました。

あとは、『css』と『js』で見え方や動き方を設定していきます。

 
格安ドメイン名取得サービス『エックスドメイン』

スタイルシート (style.css)

 

以下を子テーマのcssファイルに記述します。

こちらは、好みで色を変えたり、配置を変えたりしてください。

参考までに、作ってみました。

 

 

.suma{
display:inline-block;
width:100%;
}
.nav-toggle{
z-index:9999;
margin:0;
cursor:pointer;
position:fixed;
top:0;
right:0;
padding:10px;
background-color:#111;
}
.nav-toggle:hover{
opacity:0.7;
}
.nav-toggle-icon {
position: relative;
display: block;
height: 2px;
width: 30px;
background: #fcfcfc;
-webkit-transition: ease .5s;
-moz-transition: ease .5s;
-o-transition: ease .5s;
transition: ease .5s;
}
.nav-toggle-icon:nth-child(1) {
top: 0;
}
.nav-toggle-icon:nth-child(2) {
margin: 8px 0;
}
.nav-toggle-icon:nth-child(3) {
top: 0;
}
/*OPEN時の動き*/
.nav-toggle.open .nav-toggle-icon:nth-child(1) {
top: 10px;
-moz-transform: rotate(45deg);
-webkit-transform: rotate(45deg);
-o-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
}
.nav-toggle.open .nav-toggle-icon:nth-child(2) {
-webkit-transform: translateY(-50%);
-moz-transform: translateY(-50%);
-o-transform: translateY(-50%);
-ms-transform: translateY(-50%);
transform: translateY(-50%);
opacity: 0;
}
.nav-toggle.open .nav-toggle-icon:nth-child(3) {
top: -10px;
-webkit-transform: rotate(-45deg);
-moz-transform: rotate(-45deg);
-o-transform: rotate(-45deg);
-ms-transform: rotate(-45deg);
transform: rotate(-45deg);
}
.slide-container{
-webkit-transform: translate(-100%,-50%);
-moz-transform: translate(-100%,-50%);
-ms-transform: translate(-100%,-50%);
-o-transform: translate(-100%,-50%);
transform: translate(-100%,-50%);
-webkit-transition:ease .7s;
-moz-transition: ease .7s;
-o-transition: ease .7s;
transition:ease .7s;
z-index:1000;
display:-webkit-box;
display:-ms-flexbox;
display:-webkit-flex;
displau:-moz-box;
display:flex;
-webkit-box-align:center;
-ms-flex-align:center;
-webkit-align-items:center;
-moz-box-align:center;
-ms-grid-row-align:center;
align-items:center;
height:150vh;
text-align:left;
width:80%;
background:rgba(0,0,0,0.8);
position:fixed;
top:50%;
border-radius:0 50% 50% 0;
}
/*OPEN時の動き*/
.slide-container.open {
height:150vh;
width:80%;
z-index:8888;
background:rgba(0,0,0,0.8);
display:-webkit-box;
display:-ms-flexbox;
display:-webkit-flex;
displau:-moz-box;
display:flex;
-webkit-box-align:center;
-ms-flex-align:center;
-webkit-align-items:center;
-moz-box-align:center;
-ms-grid-row-align:center;
align-items:center;
text-align:left;
position:fixed;
-moz-transform:translate3d(0,-50%,0);
transform:translate3d(0,-50%,0);
-webkit-transform:translate3d(0,-50%,0);
-ms-transform:translate3d(0,-50%,0);
overflow-y:auto;
top:50%;
border-radius:0 50% 50% 0;
}

#menubox{
width:100%;
}

.slidemenu .menu{
display:block;
padding:0 5% 0 15%;
}

.slidemenu ul li{
list-style:none;
}
.slidemenu ul li a{
color:#fff;
font-size:16px;
display:inline-block;
padding:30px 30px;
width:auto;
text-decoration:none;
}
.slidemenu ul li a:hover{
color: #111;
}

 

jsファイル

 

以下を子テーマのjsファイルに記述します。

 

$(function() {
 $('.nav-toggle').on('click', function () {
  $(this).toggleClass('open');
  $('.slide-container').toggleClass('open');
	  });

 $('#menu-slide_menu a').on('click', function () {
  $('.nav-toggle').removeClass('open');
  $('.slide-container').removeClass('open');
	  });
 });

 

これで完成!!!

 


デモも一応作ってみました。

 

See the Pen
wvMgrqQ
by show-be (@show-be)
on CodePen.


 

-wordpress
-, ,


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

スマートスライダー

Smart Sliderのプラグインで画像に網掛け

  スライダー画像に網掛けをする   簡単にフェードアウトやスライダーができるWordPressのプラグインで有名な【Smart Slider】を使って、画像に網掛けをしたいと思い …

スクロールボタン

スクロールボタン コピペでできる

    WordPressでスクロールボタンを設置   php部分 <div class="scroll" href="#first- …

ヘッダー固定

【簡単】wordpress スクロールするとヘッダーが固定される

  ①一番最初に見えるヘッダーをカスタマイズ header.phpファイルに使っているテーマにより若干違いはありますが、下記のようなコードが記述されていると思います。 <div id= …

ヘッダー画像変える

ヘッダー画像やスライダーをページ毎に変える方法

  WordPressで作成したページで、ヘッダー画像やスライドショーをページごとに変えたい! 今回やってみたことは、条件分岐でヘッダーの画像部分を振り分けるといった方法です。 プラグインな …

360カメラ

できた!360度カメラの画像をWordPressに

  プラグインで簡単に!   360度カメラで撮影した画像をWordPress(ワードプレス)の固定ページや投稿ページまたは、カスタム投稿タイプなどに使いたいときに便利なのが、 『 …