このブログで現在使っているプラグインとfunctions.phpの中身(後編)

このブログで現在使っているプラグインとfunctions.phpの中身(後編)

前編はプラグインのまとめでした。後編では、プラグインを利用してる関数や、前はプラグインを使ってた機能なんだけど、というようなfunctions.phpの中身をまとめてみます。WP4.0で2014年9月現在の情報です。


目次

過去に解説記事を書いているものはそちらへの誘導、書いていないものはコードと引用・参考リンクなどを掲載しています。

functions.php は些細なミスでサイト全体の表示に影響しますので、必ずバックアップをしてからのお試しをお願い致します。

バックグラウンド系

  1. head内のいろいろ削除
  2. more-linkのハッシュ消し
  3. レスポンスヘッダにVary HTTPヘッダを追加
  4. RSSに記事のアイキャッチ画像を表示する

ページの表示系

  1. more位置へ広告を挿入
  2. Jetpackで人気記事表示
  3. 検索結果を投稿記事のみにする
  4. アーカイブ並び替え
  5. 新着ランダム記事
  6. コメント部分のカスタマイズ
  7. オリジナルアバター
  8. ページネーション

投稿系

  1. 管理画面の投稿一覧にID追加
  2. 任意のPHPファイルをショートコードで記事内に挿入、実行
  3. 自動保存(+リビジョン)停止
  4. 更新日時を変更しない
  5. Google Mapsを記事内に貼付け
  6. 画像挿入のクラス等削除

長くなったのでリンクで飛べるようにしました。あんまり一般的じゃなさそうなのは省いてあります。

バックグラウンド系

head内のいろいろ削除

自動で出力されるもののなかから、個人的にこれはなくてもいいかなーというものを削除。

remove_action('wp_head', 'wp_generator'); //WPver
remove_action('wp_head', 'wlwmanifest_link'); //WindowsLiveWriterの記事投稿URL
remove_action('wp_head', 'rsd_link'); //外部ツールの更新用URL
remove_action('wp_head', 'feed_links_extra', 3); //コメントフィード
remove_action('wp_head', 'wp_shortlink_wp_head'); //?p=[投稿ID]形式のURL
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head'); //rel="next"、rel="prev"

more-linkのハッシュ消し

「続きを読む」のリンクを押すと、URLに#moreというハッシュがついちゃうのが個人的にはあんまり好きじゃないので消しています。

function remove_more_jump_link($link) {
	$offset = strpos($link, '#more-');
	if ($offset) {
		$end = strpos($link, '"',$offset);
	}
	if ($end) {
		$link = substr_replace($link, '', $offset, $end-$offset);
	}
	return $link;
}
add_filter('the_content_more_link', 'remove_more_jump_link');

レスポンスヘッダにVary HTTPヘッダを追加

前回紹介したとおり、このブログではユーザーエージェントによってテーマの切り替えをしているので、google先生にそれを伝えるために書いておくと良いとのこと。

function add_vary_header( $headers ) {
	if ( ! is_admin() ) {
		$headers['Vary'] = 'User-Agent';
		return $headers;
	}
}
add_filter( 'wp_headers', 'add_vary_header' );

RSSに記事のアイキャッチ画像を表示する

デフォルトではRSSにアイキャッチ画像は配信されないようなので、追加されるようにしています。

ページの表示系

more位置へ広告を挿入

<span id="more-XXXX"></span>

このように(XXXXには記事ID)出力されたmore部を、広告コードへ置換しています。

Jetpackで人気記事表示

130621-5

前回紹介した、Jetpackプラグインの統計情報を取得して総合・カテゴリごとなどで人気記事を表示する内容。

検索結果を投稿記事のみにする

検索したとき「about」などの固定ページが検索結果に出ないよう、投稿記事のみを対象にします。

function search_only_post( $query ) {
	if ( is_admin() || ! $query->is_main_query() )
		return;

	if ( $query->is_search() ) {
		$query->set( 'post_type', 'post' );
		return;
	}
}
add_action( 'pre_get_posts', 'search_only_post' );

アーカイブ並び替え

140619-6

前回紹介したWP-PostViewsというプラグインを利用して、カテゴリ・タグなどのアーカイブページに並び替えボタンを実装する内容。

新着ランダム記事

120507-1

件数を指定して、新着やランダムの記事を表示する関数を書いています。フッターのタブと、404ページで使っています。

コメント部分のカスタマイズ

120427-2

コメント欄をどうにかするべく頑張った覚えが…w ちょっと情報が古いかもしれません。。

オリジナルアバター

120629eye

ミステリーマンを、オリジナルの画像に。

ページネーション

121204-1

PCレイアウト用と、

121204-4

モバイルレイアウト用、それぞれのテーマに違うコードを書いています。

2018/4/5追記:レスポンシブにして、現状の方法はこちらにまとめました。

投稿系

管理画面の投稿一覧にID追加

投稿IDによって条件分けとかが結構あるので、ぱっと見て記事のIDが分かるようにしてあります。地味に便利です。

function add_posts_columns_postid($columns) {
	$columns['postid'] = 'ID';
	return $columns;
}
function add_posts_columns_postid_row($column_name, $post_id) {
	if( 'postid' == $column_name ) {
		echo $post_id;
	}
}
add_filter( 'manage_posts_columns', 'add_posts_columns_postid' );
add_action( 'manage_posts_custom_column', 'add_posts_columns_postid_row', 10, 2 );

任意のPHPファイルをショートコードで記事内に挿入、実行

記事内にphpをインクルードしたいというときに。このブログは管理人はわたしだけなのでいいのですが、マルチユーザーサイトの場合はセキュリティにご注意。

function Include_my_php($params = array()) {
	extract(shortcode_atts(array('file' => 'default'), $params));
	ob_start();
	$uploads = wp_upload_dir();
	include($uploads['basedir'] . "/code/$file.php");
	return ob_get_clean();
}  
add_shortcode('myphp', 'Include_my_php');

このコードでは wp-content/uploads/code/ というフォルダを指定してあります。wp-content/uploads/code/sample.php というファイルをインクルードしたいときは、投稿画面に

[myphp file='sample']

このように書けば実行してくれます。実際に動きを見てもらいたいサンプル(例)とか、連載記事の目次(例)などに使ってます。

自動保存(+リビジョン)停止

特に必要としていないので、自動保存とリビジョンを停止しています。

自動保存停止

function disable_autosave() {
	wp_deregister_script('autosave');
}
add_action( 'wp_print_scripts', 'disable_autosave' );

リビジョン停止

リビジョンは functions.php ではなく、wp-config.php (管理画面じゃなく、WPをインストールしたフォルダに入っています)の一番下のところにこのように追記。

/* 略 */
define('WP_POST_REVISIONS', false);

/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');

更新日時を変更しない

140714-2

記事の公開日・最新更新日を表示しているのですが、誤字やカテゴリ・タグの見直しなどちょっとした直しでは最終更新日を変更したくない!というときに。これは、上記の自動保存・リビジョン停止との併用がおすすめ。

GoogleMapを記事内に貼付け

お店の紹介なんかをしたいときに、ショートコードでGoogleMapを埋め込めるようにしています。

解説記事
  • WordPressにレスポンシブ対応でGoogleMapを埋め込む方法

情報が古くなったので削除しました。

画像挿入のクラス等削除

メディアライブラリから画像を挿入すると、自動で属性が入るのですが。title属性と、特にclass="alignnone size-full wp-image-…っていうとっても長いclass属性は、わたしとしてはいらないかなー!という感じなので、出ないように。

function remove_img_attr($html, $id, $alt, $title, $align, $size) {
	$html = preg_replace('/title=[\'"]([^\'"]+)[\'"]/i', '', $html);
	return preg_replace('/ class=[\'"]([^\'"]+)[\'"]/i', '', $html);
}
add_filter('get_image_tag','remove_img_attr', 10, 6);

おわりに

以上です!いつかまとめようと思っていたのですが、結構ボリュームありましたね…(;´Д`) 変なところとか、もっと良い方法があるよーということがあったら教えていただけたらありがたいです!

公開日:2014/09/10

2件のコメント

  1. ケイタ より:

    前編のプラグインに続いて超参考になりました!
    ブログで使わせて頂きます。

    • *you より:

      ケイタさん、こちらの記事にまでコメントありがとうございます。かなりマニアックな内容も多いですがw よろしければ参考にしてくださいー!


コメントを残す

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

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

コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)

YouTubeでQ&Aコンテンツを企画しています

運営しているYouTubeチャンネルで、ご相談やご質問を募集しています。動画のコメントやお問い合わせページからお気軽にご相談をお寄せください。