最近、あるユーザーから、サイドバーの最後のウィジェットにフェードイン効果を追加する方法について質問がありました。この人気のjQueryエフェクトは、多くの有名なウェブサイトやブログで使用されています。ユーザーがページを下にスクロールすると、サイドバーの最後のウィジェットがフェードインして表示されます。このアニメーションにより、ウィジェットは目を引き、目立つようになり、クリック率が劇的に向上します。この記事では、jQueryを使用してWordPressで最後のサイドバーウィジェットをフェードインする方法を紹介します。
以下は、それがどのように見えるかのデモです。

このチュートリアルでは、テーマファイルを編集します。続行する前に、テーマのバックアップを作成することを強くお勧めします。
ステップ 1: フェードイン効果のための JavaScript を追加する
まず、jQueryコードをWordPressテーマに個別のJavaScriptファイルとして追加する必要があります。メモ帳のようなテキストエディタで空白のファイルを開くことから始めます。次に、この空白のファイルをデスクトップにwpb_fadein_widget.jsとして保存し、以下のコードを貼り付けます。
jQuery(document).ready(function($) {
/**
* Configuration
* The container for your sidebar e.g. aside, #sidebar etc.
*/
var sidebarElement = $('div#secondary');
// Check if the sidebar exists
if ($(sidebarElement).length > 0) {
// Get the last widget in the sidebar, and its position on screen
var widgetDisplayed = false;
var lastWidget = $('.widget:last-child', $(sidebarElement));
var lastWidgetOffset = $(lastWidget).offset().top -100;
// Hide the last widget
$(lastWidget).hide();
// Check if user scroll have reached the top of the last widget and display it
$(document).scroll(function() {
// If the widget has been displayed, we don't need to keep doing a check.
if (!widgetDisplayed) {
if($(this).scrollTop() > lastWidgetOffset) {
$(lastWidget).fadeIn('slow').addClass('wpbstickywidget');
widgetDisplayed = true;
}
}
});
}
});
このコードで最も重要な行はvar sidebarElement = $('div#secondary');です。
これは、サイドバーを含む div の ID です。各テーマでサイドバーコンテナ div が異なる場合があるため、テーマがサイドバーに使用しているコンテナ ID を見つける必要があります。
Google Chrome のインスペクト要素ツールを使用すると、これを調べることができます。Google Chrome でサイドバーを右クリックし、[要素を検証] を選択するだけです。

ソースコードを確認すると、サイドバーコンテナのdivが表示されます。例えば、デフォルトのTwenty TwelveテーマではサイドバーコンテナのIDとしてsecondaryが、Twenty Thirteenではtertiaryが使用されています。secondaryを、お使いのサイドバーコンテナdivのIDに置き換える必要があります。
次に、FTPクライアントを使用して、このファイルをWordPressテーマディレクトリ内のjsフォルダにアップロードする必要があります。テーマディレクトリにjsフォルダがない場合は、FTPクライアントで右クリックして「新規ディレクトリの作成」を選択して作成する必要があります。
ステップ2:WordPressテーマでのJavaScriptのエンキュー
jQueryスクリプトの準備ができたので、テーマに追加する時間です。WordPressのテーマに適切な方法でJavaScriptを追加します。以下のコードをテーマのfunctions.phpファイルに貼り付けてください。
wp_enqueue_script( 'stickywidget', get_template_directory_uri() . '/js/wpb-fadein-widget.js', array('jquery'), '1.0.0', true );
これで完了です。サイドバーにフェードイン効果で表示したいウィジェットを追加し、ウェブサイトにアクセスして動作を確認できます。
ステップ 3: フェードイン効果の後、最後のウィジェットを固定する
フェードイン効果でよく要望される機能は、ユーザーがスクロールする際に最後のサイドバーウィジェットをスクロールさせることです。これはフローティングウィジェットまたはスティッキーウィジェットと呼ばれます。
上記のjQueryコードを見ると、フェードインエフェクトの後でウィジェットにwpbstickywidget CSSクラスを追加したことに気づくでしょう。このCSSクラスを使用して、最後のウィジェットがフェードインした後にスティッキーにすることができます。テーマのスタイルシートにこのCSSを貼り付けるだけです。
.wpbstickywidget {
position:fixed;
top:0px;
}
必要に応じてCSSを自由に修正してください。背景色やフォントを変更して、ウィジェットをさらに目立たせることができます。必要であれば、最後のウィジェットの隣にスムーズなトップスクロール効果を追加することもできます。これにより、ユーザーはすばやくスクロールバックできます。
この記事が、WordPressサイドバーの最後のウィジェットにフェードイン効果を追加するのに役立ったことを願っています。jQueryのさらなる活用については、WordPress初心者向けの最高のjQueryチュートリアルをご覧ください。
この記事が気に入ったら、WordPressのビデオチュートリアルについては、YouTubeチャンネルを購読してください。また、TwitterやGoogle+でもフォローできます。

Roger Perkin
サイトに実装しようとしていますが、うまくいきません
質問 2件
私のサイトを確認して、サイドバーのdiv IDを検証してもらえますか?
また、enqueue script は get_template_directory ではなく get_stylesheet_directory_uri() . になるべきですか?
ありがとうございます。これを機能させたいです。
ロジャー
Jonathan
フェードインの代わりに、スティッキーウィジェットをフェードアウトすることはできますか?
WPBeginnerサポート
JavaScript の fadeIn を fadeOut に置き換えてみてください。
管理者
ジョニー
こんにちは、これを私のページに実装しようとしていますが、うまくいかないようです。.jsファイルをテーマディレクトリのjsフォルダに追加し、functions.phpに追加しましたが、フェードが表示されません。functions.phpのどこに正確に追加すればよいですか?ファイルが大きいので。
Twenty Fourteen を使用しており、サイドバー ID は「content-sidebar」ですが、これは .js ファイルで変更しました。サイドバーには他にもいくつかのウィジェットがありますが、何か競合しているのでしょうか?
どんな助けでも感謝します!ありがとうございます。
ジョニー
こちらが私の.JSコードです
jQuery(document).ready(function($) { /** * 設定
* サイドバーのコンテナ。例: aside, #sidebar など。
*/
var sidebarElement = $(‘div#content-sidebar’);
// サイドバーが存在するかどうかを確認します
if ($(sidebarElement).length > 0) {
// サイドバーの最後のウィジェットと、画面上のその位置を取得します
var widgetDisplayed = false; var lastWidget = $( '.widget:last-child', $(sidebarElement) ); var lastWidgetOffset = $(lastWidget).offset().top -100;
// 最後のウィジェットを非表示にします $(lastWidget).hide();
// 最後のウィジェットの上部にユーザーがスクロールしたかどうかを確認し、表示します $(document).scroll(function() {
// ウィジェットが表示された場合、チェックを続ける必要はありません。
if (!widgetDisplayed) { if($(this).scrollTop() > lastWidgetOffset) { $(lastWidget).fadeIn('slow').addClass('wpbstickywidget'); widgetDisplayed = true; } } }); } });
WPBeginnerサポート
すべてのプラグインを無効にして、機能するかどうかを確認してください。また、要素を検査してエラーがないか確認することもできます。
管理者
bb
こんにちはwpbeginnerさん、この調整とコミュニティへの解決策の提供に感謝します。ありがとうございます!質問があります。応募者によって送信されたアプリケーションフォームをクエリするにはどうすればよいですか?または、プラグイン/ソリューションはありますか?結果は管理ダッシュボードに表示されます。たとえば、25歳未満の応募者は何人ですか?そして、プラグインはデータベースから結果を取得し、エクスポート可能な素敵なテーブル形式で関連詳細を表示する必要があります。可能ですか?アドバイスをお願いします。ありがとうございます。
ジャン・ジェラール・ブーシコ
そのためにはGravity Formsを確認できますが、PHPについて知る必要があります。そうでない場合は、必要なものを実現するために開発者に支払う必要があります。
デレク・プライス
これは少しトピックから外れていませんか?意図的に行いましたか?WPスタッフに質問がある場合、ブログ記事のトピックから外れないように、連絡機能を使用しませんか?