WordPress:Twenty Fifteen上部に横長バナーを入れる方法

Twenty Fifteenでメイン上部に横長バナーを設置する方法です。
以下、PC用の解説になるので、ウィンドウを広げて2カラムにしてください。

基本的にこのブログではGoogle AdSense側の設定で「自動広告」にしています。

最初の頃はPCでもメイン上部に自動的にバナーが表示されていたのですが、いつの頃からか表示されなくなってしまい収益がガタっと落ちました。

仕方ないのでマニュアルで入れてみました。
実際に修正するファイルは、

wp-content/themes/twentyfifteen/header.php

なのですが、このファイルを直接いじってしまうとWordPressをバージョンアップする度にリセットされてしまうので、子要素を作って対応します。

例)
wp-content/themes/Twenty Fifteen Child/header.php
※初めてのかたは設定の変更が必要です。

で、ファイル一番下の、

<div id="content" class="site-content">

の直下にAdSenseバナーのスクリプトを入れるだけです。
CSSで位置の微調整はしてあげてください。

うちの場合、スマホは自動的に上部に表示されるので、CSSで横幅940px以下になると消える設定にしてあります。
例えば、header.phpで該当スクリプトをDIVタグで囲い、

<div id="bnr">
AdSenseのスクリプト
</div>

WordPressのstyle.cssで以下のような設定をします。

@media screen and (min-width:941px) {
	#bnr{
		margin:0 auto;
		padding:10px 0;
	}
}

@media screen and (max-width:940px) {
	#bnr{
		display:none;
	}
}

大きさが自動で変わるバナーをあらかじめAdSenseサイトで作っておきます。
背景が黄色になる場合は以下の方法でCSSを透明にしておきます。

header.phpに入れたAdSenseのスクリプトで、

style="display:block"

とある部分を

style="display:block; background-color:transparent;"

に修正。

WordPress:RSS、WordPress.orgリンクを削除する方法

ウィジェットにデフォルトで表示されるRSS、WordPress.orgリンクがあって、バージョンアップの度に消している人も多いかと思います。
WordPressがバージョンアップして、リンクを削除するためのファイルが変わったようです。

現時点での最新情報です。
WordPressは仕様がコロコロ変わるので、また変更した際にはご勘弁を。

以前のファイル位置は、

wp-includes/default-widgets.php

だったのですが、今回から

wp-includes/widgets/class-wp-widget-meta.php

になってました。
ディレクトリが一つ増えていますね。

直す方法は以前と同じです。
54行目辺りから始まる<li></li>をコメントアウトしてしまえばいいです。

<li><a href="<?php echo esc_url( get_bloginfo( 'rss2_url' ) ); ?>"><?php _e('Entries <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li>
<li><a href="<?php echo esc_url( get_bloginfo( 'comments_rss2_url' ) ); ?>"><?php _e('Comments <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li>
echo apply_filters( 'widget_meta_poweredby', sprintf( '<li><a href="%s" title="%s">%s</a></li>',

ココら辺を以下のように変えれば完了。

<!--li><a href="<?php echo esc_url( get_bloginfo( 'rss2_url' ) ); ?>"><?php _e('Entries <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li-->
<!--li><a href="<?php echo esc_url( get_bloginfo( 'comments_rss2_url' ) ); ?>"><?php _e('Comments <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li-->
echo apply_filters( 'widget_meta_poweredby', sprintf( '<!--li><a href="%s" title="%s">%s</a></li-->',

これでウィジェットからは消えます。
 

WordPress:なんか重い・・・と感じたら→DB最適化

昔のハードディスクではよくやったものですが、最適化するとスピードが少し早くなります。
WordPressはけっこうモッサリしているので、やらないとドンドン重くなります。

記事を自動的に保存して先祖返りできる構造になっていますから、DBにゴミがいっぱいたまるんですね。
いらないレコードは自動的に削除して欲しいのですが、そうなっていないようです。

なので「WP-Optimize」というプラグインで最適化してあげます。

管理画面の

プラグイン > 新規追加

で探せばサクっとインスコできます。

左メニューの下の方に「WP-Optimize」というメニューが現れるのでクリックします。
設定画面のチェックボックスに全部チェックし「PROCESS」ボタンを押せばおk。

自分は1週間に1度は行なっていますが、やらないでいると本当に重くなります。
 

WordPressの記事内にバナーをランダムで表示する方法 その2

前回は記事内でPHPコードを実行するプラグイン「Exec-PHP」をインストールするところまで終わりました。

今回はバナーをランダム表示するためのPHPコードをファイルに保存します。
そのファイルを各記事からincludeで読み込みます。

ルートディレクトリに「random」というフォルダを作ります。
その中に「1.php」〜「10.php」といった具合に、使いたいバナーの分だけPHPファイルを作ります。
ファイルの中には各バナーのソースを入れて保存してください。
1ファイル、1バナーです。
ファイル数はいくつになっても構いませんが、ファイル名は必ず連番にしておきます。

ルートディレクトリに「random.php」でも何でもいいのでPHPファイルを作り、その中に下のコードを入れます。

<?php
//バナーのランダム表示
$dir='/home/hoge.com/public_html/random/';//バナーコードのファイルが入ったディレクトリ
$dir_array=scandir($dir);//ファイルを配列に入れる
$num=count($dir_array)-2;//ファイル数取得。「.」と「..」は引いておく
$random=mt_rand(1,$num);//ランダム数を生成
$banner=$dir.$random.'.php';//表示するファイル名を生成
include $banner;//読み込んで表示
?>

requireにしたらエラーを起こしたのでincludeで。

ディレクトリの指定は「/random/」だけではなくて、サーバーのフルパスを書かないといけないので注意が必要です。
パーミッションは705です。
自分はこのフルパスに気づかず丸1日悩みました。。。ort

そして各記事の中に、

<?php include '/home/hoge.com/public_html/random.php'; ?>

のようにフルパスで実行ファイルを指定すれば出来上がりです。

ちなみに10コもバナーがあると、どのファイルにどのバナーが入っているかわからなくなってしまったので、一覧できるコードも作っておきました。
仮にrandom_chk.phpというファイルを作ったとして、その中に以下のコードを入れます。
今回は相対パスで指定したので、random_chk.phpはrandom.phpと同じ階層に入れておきます。

<?php
//バナーのランダム表示
$dir='random/';//相対パスでもOK
$dir_array=scandir($dir);//ファイルを配列に入れる
$num=count($dir_array)-2;//ファイル数取得。「.」と「..」は引いておく

//全バナー表示
for($i=1; $i<=$num; $i++){
	print $i.'.<br />';
	$banner=$dir.$i.'.php';
	require($banner);
	print '<br /><br />';
}
?>

ブラウザでrandom_chk.phpを叩けば、ファイルナンバーとバナーが表示される一覧の出来上がりです。

WordPressの記事内にバナーをランダムで表示する方法 その1

うちのように各記事にバナーを置いているけど、記事が増えていくにつれてバナーの管理に困っているという人は多いはず。
バナーは掲載期間があったりするので、ちょっと面倒になり自動化したいと思いました。

報酬額が気になる人はやらないと思いますが、うちの場合ほぼ飾りなので完全ランダム表示にしてしまいます。
流れとしては、

(1)記事内でPHPコードを実行できるようにする
(2)ランダム表示するPHPコードを書く
(3)記事内にPHPコードを入れる(include)

となります。

(1)は簡単なようでちょっと面倒でした。
記事内でPHPコードを実行する「Exec-PHP」というプラグインがあるのでインストールします。
管理画面から検索すればヒットします。
2年以上更新がないそうですが問題なく動いています。

有効化してからExec-PHPの設定画面で「Execute PHP code in text widgets」にチェックを入れ保存します。

Exec-PHP設定画面

有効化した後、一瞬時間をおいたほうがいいかも。
自分は表示が一瞬乱れてました。

で、問題なのはそのまま投稿画面にいくと、

「Exec-PHP WYSIWYG Conversion Warning. Saving this article will render all contained PHP code permanently unuseful. Even if you are saving this article through the Code editor. You can turn off this warning in your user profile. Ignore this warning in case this article does not contain PHP code. Read the Exec-PHP documentation if you are unsure what to do next.」

というアラートを毎回出されてしまいます。
直すには左メニューの、

ユーザー > あなたのプロフィール

Exec-PHP あなたのプロフィール

一番下に追加される「Disable WYSIWYG Conversion Warning」にチェックを入れて「プロフィールを更新」ボタンをクリックすれば解決します。

記事内で、

<?php print 'てすとー&#39; ?>

などと書いてみて「てすとー」だけ表示されていたら成功です。

「more」といっしょに使うとエラーを起こすらしいですが、いっしょに使わなければ無問題。
moreを使いたい場合は、

wp-includes > formatting.php

	// WP fix for the bug with HTML comments
	$newtext = str_replace("< !--","<!--",$newtext);
	$newtext = str_replace("<    !--","< !--",$newtext);

の下に1行追加して、

	// WP fix for the bug with HTML comments
	$newtext = str_replace("< !--","<!--",$newtext);
	$newtext = str_replace("<    !--","< !--",$newtext);
	$newtext = str_replace("< ?php","<?php",$newtext);//←追加

とすれば直るはずです。

自分はSyntaxHighlighter Evolvedを使っているので、コンフリクトを起こさないかと心配したのですが問題ありませんでした。

では次回ランダム表示するPHPコードを書いてみます。