WordPress

WordPress★プラグインなしでページのトップへ戻るリンクを設置

投稿日:

ページのトップへ戻るボタンを設置するとき、プラグインを使うか自作するか。。。いつも迷ってしまう。プラグインは便利で簡単だけど、使わない機能もたくさんついてくるし、余分なデータは極力省きたい。だから、今回は自作してみよう!と思って調べました。たくさん見つかったサンプルコードをコピペして試しながら実際に設置してみました。

step1 footer.phpにコードを設置

footer.phpの「/body」ボディの閉じタグより前に下のコードを設置します。
「▲」の部分は、自由に編集。記号じゃなくて、「TOPへ」などのテキスト形式でもOK。

<a href="#top" class="page_top">▲</a>

 

step2 JSファイルをつくる

あらかじめ、ベースのjQueryは読み込んであるとします。

<script async src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

続いて、コードを記述した JSファイルを作成します。
下のコードを totop.js という名前で保存。

$(function() {
var pageTop = $('.page_top');
pageTop.hide();
$(window).scroll(function () {
if ($(this).scrollTop() > 600) {
pageTop.fadeIn();
} else {
pageTop.fadeOut();
}
});
pageTop.click(function () {
$('body, html').animate({scrollTop:0}, 500, 'swing');
return false;
});
});

functions.phpから、先ほど作ったjsファイルを読み込ませます。

//JavaScriptの読み込み

function add_my_js_script() {
wp_enqueue_script( 'totop', get_template_directory_uri() .'/js/totop.js', array(), '', true);
}   
add_action('wp_enqueue_scripts', 'add_my_js_script');

 

step3 CSSで装飾する

footer.phpに設置したコードにあるクラス「.page_top」に CSS を設定していきます。ココでボタンの見え方を自由に定義します。

/* cssのサンプル */

.page_top {
position:fixed;
bottom:10px;
right:10px;
width: 50px;
height: 50px;
-webkit-border-radius: 50%;
-moz-border-radius: 50%;
border-radius: 50%;
color:#fff;
font-size:20px;
text-decoration:none;
background:#2EA2CC;
border: 3px solid #ffffff;
text-align: center;
line-height: 50px;
}

これで完了!スクロールすると、ふわっとボタンが現れて、クリックするとページのトップへ移動します。

別のスクリプト

HTML:footer.phpの</body>手前あたりに貼り付け

<div id="page-top">
  <a id="move-page-top">▲</a>
</div>

CSS

/*------------------------
TOPへ戻るボタン
---------------------------*/
#page-top{
    position:fixed;
    right:16px;
    bottom:16px;
    display: none;
    z-index:9999;
}

#page-top a{
    color:#fff;
    padding:10px;
    text-decoration:none;
    display:block;
    cursor:pointer;
    text-align:center;
    background:#aaa;
    line-height:100%;
    border-radius: 5px;
    -webkit-border-radius: 5px;
     -moz-border-radius: 5px; 
}

#page-top a:hover{
    background:#8b8b8b;
    -webkit-transition:all 0.3s;
    -moz-transition:all 0.3s;
    transition:all 0.3s;
}

javascript

jQuery(function(){
  jQuery(window).scroll(function(){
    //最上部から現在位置までの距離を取得して、変数[now]に格納
    var now = jQuery(window).scrollTop();
    //最上部から現在位置までの距離(now)が600以上
    if(now > 600){
      //[#page-top]をゆっくりフェードインする
      jQuery('#page-top').fadeIn('slow');
      //それ以外だったらフェードアウトする
    }else{
      jQuery('#page-top').fadeOut('slow');
    }
  });
  //ボタン(id:move-page-top)のクリックイベント
  jQuery('#move-page-top').click(function(){
  //ページトップへ移動する
  jQuery('body,html').animate({
          scrollTop: 0
      }, 800);
  });
});

WordPressではjQueryを記述するときに$の代わりに上のサンプルコードのような書き方をする必要があります。

まとめ

調べてみると、いろいろな設定の方法がありました。実際に試してみて、コードがわかりやすいこと、CSSが少なめであること、という点で上のスクリプトを採用しました。別案の方は、CSSがちょっと多めだったので今回は使いませんでしたが、試してみたところ、WordPress内でちゃんと動きました。

 

本サイトの内容に誤りや不正確な記述がある場合やサンプルに基づくいかなる結果も一切の責任を負いかねますので、あらかじめご了承ください。

-WordPress

執筆者:


comment

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

サイト内で別ページの特定場所にリンクを貼るには

  サイト内で別のページの特定の箇所にリンクを張りたいとき。 エディターの「リンク」ボタンでは、別ページにはリンクを貼れますが、リンク先の特定の箇所を指定できません。 長いページの場合、リン …

WordPress★IE11でマウススクロールするとfixedで固定した背景画像がガタつくバグを修正

windows8+IE11とwindows10-IE11という閲覧条件のクライアントさまから、「マウスでスクロールすると画像がガクガクしてるよ!」との報告。急いで、原因を探ることになりました。 原因 …

【2021年最新版】WP★ContactForm7 送信後に異なる URL にリダイレクトさせる/カスタム DOM イベント使用

Contact Form 7 プラグインで、送信完了後にサンキューページに遷移する方法を紹介しましたが、プラグインの仕様変更で設定方法が変わりましたので、改めて紹介します。 子テーマのfunction …

WP★ページごとにnoindexの設定をする

サンキューページなど、検索したときに表示しなくてもよいページに「noindex」のメタタグをつけておくと、SEOに効果的とのこと。 下のタグをheader内に入れます。 <meta name=” …

Anti-SPAM-Schild mit Mails im Hintergrund - orange

WP★スパム対策|日本語を必須にする& Google reCAPTCHA で2重のガード!

クライアントさまから「海外からのスパムメールが酷いので何とかならないか」と相談を受け、早速、対策をリサーチ。あまり難しいことをしなくても効果的な対策はないかなぁ。いろいろ調べて絞り込んだ2つの対策をや …

サイト制作・グラフィック制作をしているデザイナーです。制作で躓いたことの備忘録としてこのブログを始めました。
たくさんの検索結果から、実際に何度も何度も自分で試してみて、自分に合うなと思った方法やうまくいった方法をこのブログに書き留めています。
プログラム関係のことはもっぱらコピペ派。
自分でゴリゴリ書くことはできません。。。プログラムが分かる人がうらやましいです。
そんな私でもなんとかサイト制作ができるのはグーグル先生と貴重な情報をおしげもなく公開してくださっているたくさんの方々のおかげ。
有志のみなさまに日々感謝しつつ制作させていただいています。