Written by Manabu Bannai

【WordPress】サイドバーに追尾型(固定型)の広告を設置する方法

PROGRAMMING

※新しく記事を書きました。以下の方法がおすすめです。
スクロールしたらサイドバー固定するコピペ用スクリプト【jQuery利用】

サイドバーに広告を固定して、機会損失を防ぎましょう( ◜◡ ̄)

サイドバーに追尾型の広告を設置する手順4ステップ

【1】</body>の直前にScriptの追加
【1】single.phpの最初にコードの追加
【3】single.phpの最後にコードの追加
【4】サイドバーにコードの追加

とっても簡単です。
それでは書いていきます㏄= ㏄=┌( ・_・)┘

【1】</body>の直前に、以下のScriptを追加する。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>

<script type="text/javascript">
(function($) {
	$(document).ready(function() {
		/*
		Ads Sidewinder
		by Hamachiya2. http://d.hatena.ne.jp/Hamachiya2/20120820/adsense_sidewinder
		*/
		var main = $('#main'); // メインカラムのID
		var side = $('#side'); // サイドバーのID
		var wrapper = $('#ad1'); // 広告を包む要素のID

		var w = $(window);
		var wrapperHeight = wrapper.outerHeight();
		var wrapperTop = wrapper.offset().top;
		var sideLeft = side.offset().left;

		var sideMargin = {
			top: side.css('margin-top') ? side.css('margin-top') : 0,
			right: side.css('margin-right') ? side.css('margin-right') : 0,
			bottom: side.css('margin-bottom') ? side.css('margin-bottom') : 0,
			left: side.css('margin-left') ? side.css('margin-left') : 0
		};

		var winLeft;
		var pos;

		var scrollAdjust = function() {
			sideHeight = side.outerHeight();
			mainHeight = main.outerHeight();
			mainAbs = main.offset().top + mainHeight;
			var winTop = w.scrollTop();
			winLeft = w.scrollLeft();
			var winHeight = w.height();
			var nf = (winTop > wrapperTop) && (mainHeight > sideHeight) ? true : false;
			pos = !nf ? 'static' : (winTop + wrapperHeight) > mainAbs ? 'absolute' : 'fixed';
			if (pos === 'fixed') {
				side.css({
					position: pos,
					top: '',
					bottom: winHeight - wrapperHeight,
					left: sideLeft - winLeft,
					margin: 0
				});

			} else if (pos === 'absolute') {
				side.css({
					position: pos,
					top: mainAbs - sideHeight,
					bottom: '',
					left: sideLeft,
					margin: 0
				});

			} else {
				side.css({
					position: pos,
					marginTop: sideMargin.top,
					marginRight: sideMargin.right,
					marginBottom: sideMargin.bottom,
					marginLeft: sideMargin.left
				});
			}
		};

		var resizeAdjust = function() {
			side.css({
				position:'static',
				marginTop: sideMargin.top,
				marginRight: sideMargin.right,
				marginBottom: sideMargin.bottom,
				marginLeft: sideMargin.left
			});
			sideLeft = side.offset().left;
			winLeft = w.scrollLeft();
			if (pos === 'fixed') {
				side.css({
					position: pos,
					left: sideLeft - winLeft,
					margin: 0
				});

			} else if (pos === 'absolute') {
				side.css({
					position: pos,
					left: sideLeft,
					margin: 0
				});
			}
		};
		w.on('load', scrollAdjust);
		w.on('scroll', scrollAdjust);
		w.on('resize', resizeAdjust);
	});
})(jQuery);
</script>

【2】single.phpの最初に、以下のコードを追加。

<div id="main">

【3】single.phpの最後に、以下のコードを追加。

</div>

【4】サイドバーの<div>内で、追尾型(固定型)の広告を設置したい場所に、以下のコードを設置する。

<div id="side">
<div id="ad1">
ここが固定されるよ( ◜◡‾)
ここが固定されるよ( ◜◡‾)
ここが固定されるよ( ◜◡‾)
</div></div>

以上で完成です。
このブログにもしっかりと実装されています。

以下のサイトを参考にさせていただきました。

ライブドアみたいにスクロールしたらサイドバーの広告を固定する – ぼくはまちちゃん!(Hatena)

photo credit: alles-schlumpf via photopin cc