default-filters.phpを弄ってWordPressをカスタマイズ ~ 自動改行無効など

default-filters.php をいじるとイロイロと便利なことができます。たとえば

  • 自動改行を無効にできる
  • ヘッダーに自動挿入されるコードが出てこないようにできる

自動アップデートするたびにいじった内容が元に戻ってしまうのがメンドウといえばメンドウですが

default-filters.phpを編集する前準備

  • 自己責任でお願いします。
  • default-filters.php をいじるまえにバックアップしておきましょう。 /wp-includes/ フォルダの default-filters.php をコピーしてバックアップします
  • default-filters.php をUTF-8を扱えるテキストエディタで開きます
  • 失敗した時のことを考えてメンテナンスモードを使ったほうがいいかと思います

やること

  1. default-filters.php の消去したい機能がある行をコメントアウトする(削除してもOK)
  2. 編集したファイルをアップロードする

たとえばエントリーの自動改行機能を無効にする

※以下のソースはWordPress3.0の /wp-includes/default-filters.php のものです(連続した半角スペースは削除しています)

120行目

1
add_filter( 'the_content', 'wpautop');

1
// add_filter( 'the_content', 'wpautop');

のようにコメントアウトします。コレで自動改行機能が無効になります。

127行目

1
add_filter('the_excerpt', 'wpautop');

をコメントアウトすると抜粋の自動改行が、

136行目の

1
add_filter('comment_text', 'wpautop', 30);

をコメントアウトするとコメントの自動改行が無効になりますのでご注意を

その他コメントアウトすることもあるのかなぁという部分

184行目

1
add_action('wp_head', 'feed_links_extra', 3);

アーカイブやコメントのフィードURLを示すLINKタグをヘッダーに挿入?だと思います

185行目

1
add_action('wp_head', 'rsd_link');

RSDを利用したことが無いのでよく知りませんが、iPhoneなどで投稿する時に使うらしいです

186行目

1
add_action('wp_head', 'wlwmanifest_link');

wlwmanifest は Windows Live Writer を使ってブログ投稿する時に必要らしいです

187行目

1
add_action('wp_head', 'index_rel_link');

ブログのフロントページURLを示すLINKタグをヘッダーに挿入

189行目

1
add_action('wp_head', 'start_post_rel_link', 10, 0);

最も古い記事、つまり最初に公開した記事のURLを示すLINKタグをヘッダーに挿入

190行目

1
add_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);

前後の記事URLを示すLINKタグをヘッダーに挿入

196行目

1
add_action('wp_head', 'wp_generator');

「このブログはワードプレス○○バージョンでつくってるよ」というMETA generator タグをヘッダーに挿入

1
2
3
4
// 203~205行目
foreach ( array( 'rss2_head', 'commentsrss2_head', 'rss_head', 'rdf_header', 'atom_head', 'comments_atom_head', 'opml_head', 'app_head' ) as $action ) {
add_action($action, 'the_generator');
}

フィードなどにジェネレータータグを挿入

212~215行目

1
2
3
4
add_action('do_feed_rdf', 'do_feed_rdf', 10, 1);
add_action('do_feed_rss', 'do_feed_rss', 10, 1);
add_action('do_feed_rss2', 'do_feed_rss2', 10, 1);
add_action('do_feed_atom', 'do_feed_atom', 10, 1);

これらを全てリムーブするとフィードが生成されなくなります (アクセスしても「正しいフィードテンプレートではありません。」と404が帰ってくる)

アプデのたびに修正するのがメンドウな場合は

WordPressの定義関数のremove_actionやremove_filterを使います。 今のところ remove_action と remove_filter とは全く同じ機能の関数なのでどっちを使ってもできることは変わりませんが原則として remove_action はアクション(add_action)、remove_filter はフィルター(add_filter)に対して使います。 要するにadd_actionはremove_actionに、add_filterはremove_filterに書き換えればOKです。

例えばテーマテンプレート(wp-includesフォルダでは無いです)の functions.php

1
2
3
4
<?php
remove_filter('the_content', 'wpautop');
remove_action('wp_head', 'wp_generator');
?>

と書き加えれば、メタジェネレータの挿入やコンテンツにおける自動改行が無効となります。

プラグインにしてしまえば

アップデートしてもテンプレートを変更しても修正せずに済むのでいいかもしれません。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
/*
Plugin Name: TEKITOUNA Remove Actions and Filters
Plugin URI: http://fernweh.jp/default-filters-php/
Description: Remove Actions and Filters
Author: Fernweh
Version: 1.00
Author URI:
*/


remove_filter('the_content', 'wpautop');
remove_action('wp_head', 'wp_generator');
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wlwmanifest_link');
remove_action('wp_head', 'start_post_rel_link', 10, 0);
foreach ( array( 'rss2_head', 'commentsrss2_head', 'rss_head', 'rdf_header', 'atom_head', 'comments_atom_head', 'opml_head', 'app_head' ) as $action ) {
remove_action($action, 'the_generator');
}
?>

こんな感じの内容のphpファイル(名前は何でもよい)を作って /wp-content/plugins/ フォルダにアップして、管理画面から有効化すればOKです。