この記事は年以上前に書かれたもので、内容が古かったり、セキュリティ上の問題等の理由でリンクが解除されている可能性があります。
いつかやろうと思っていたWPの
functions.phpで出来ることのま
とめが、海外のWP専門質問サ
イトにあったのでこちらをご紹介。
個人的にもかなり役に立ちました。
Q&Aサイトは色々助かりますよね。
WordPressのテーマファイルで使えるfunctions.phpは色々とテーマの機能を拡張するのに大いに貢献してくれます。
このfunctions.phpを使って何が出来るのかは、WebデザインレシピさんのWordPressのfunctions.phpに書いておくといいかもしれないコードいろいろという記事をご覧になってみてください。
今日ご紹介するBest Collection of Code for your functions.php fileというスレッドには79個の回答があります。
Best Collection of Code for your functions.php file

WordPressの情報専門のQ&Aサイト・WordPress Answersでのスレッドです。functions.phpで出来ることを募集したところ、現在まで79件の回答があるみたいです。
例えば・・・
メニューに「すべての設定」項目を加える
function all_settings_link() {
add_options_page(__('All Settings'), __('All Settings'), 'administrator', 'options.php');
}
add_action('admin_menu', 'all_settings_link');
上記コードでメニューに「すべての設定」項目を追加します。
実装例

このページは元々wp-admin/options.phpにアクセスすれば見れますが、そのリンクをメニューに追加する、というものです。上記コードは管理者のみがアクセス出来ます。
「投稿」の不要な項目を削除する
投稿ページにはカスタムフィールドや抜粋、トラックバックなど様々な項目がありますが、Webに疎い方にとっては不要な場合もあります。使わないと決まっているなら削除してしまうのもいいですね。
function remove_default_post_screen_metaboxes() {
remove_meta_box( 'postcustom','post','normal' ); // Custom Fields Metabox
remove_meta_box( 'postexcerpt','post','normal' ); // Excerpt Metabox
remove_meta_box( 'commentstatusdiv','post','normal' ); // Comments Metabox
remove_meta_box( 'trackbacksdiv','post','normal' ); // Talkback Metabox
remove_meta_box( 'slugdiv','post','normal' ); // Slug Metabox
remove_meta_box( 'authordiv','post','normal' ); // Author Metabox
}
add_action('admin_menu','remove_default_post_screen_metaboxes');
// REMOVE META BOXES FROM DEFAULT PAGES SCREEN
function remove_default_page_screen_metaboxes() {
remove_meta_box( 'postcustom','page','normal' ); // Custom Fields Metabox
remove_meta_box( 'postexcerpt','page','normal' ); // Excerpt Metabox
remove_meta_box( 'commentstatusdiv','page','normal' ); // Comments Metabox
remove_meta_box( 'trackbacksdiv','page','normal' ); // Talkback Metabox
remove_meta_box( 'slugdiv','page','normal' ); // Slug Metabox
remove_meta_box( 'authordiv','page','normal' ); // Author Metabox
}
add_action('admin_menu','remove_default_page_screen_metaboxes');
項目はだいたいおわかりになるかと思います。例えばCustom Fields Metaboxはカスタムフィールドのボックスの削除ですね。
実装例

すっきり!
「ページ」に抜粋ボックスを加える
WPには地味に便利な抜粋という項目があり、テーマファイル内でthe_excerptで簡単に呼び出せます。ですが、デフォルトでは記事のみの機能で「ページ」にはありません。ページで使いたいのであれば以下を追記します。
if ( function_exists('add_post_type_support') )
{
add_action('init', 'add_page_excerpts');
function add_page_excerpts()
{
add_post_type_support( 'page', 'excerpt' );
}
}
実装例

↑ 追加されています。
と、このスレッドでは答えられていますが、実際は1行で追加できます。
add_post_type_support( 'page', 'excerpt' );
RSSの配信を停止する
WordPressでは多数のRSSを配信しています。通常のフィードだけでなく、タグやカテゴリにもフィードがあります。これを止める必要があるかどうかは僕には分かりません。しかし、止めたいのであれば以下のように記述します。
function fb_disable_feed() {
wp_die( __('No feed available,please visit our <a href="'. get_bloginfo('url') .'">homepage</a>!') );
}
add_action('do_feed', 'fb_disable_feed', 1);
add_action('do_feed_rdf', 'fb_disable_feed', 1);
add_action('do_feed_rss', 'fb_disable_feed', 1);
add_action('do_feed_rss2', 'fb_disable_feed', 1);
add_action('do_feed_atom', 'fb_disable_feed', 1);
実装例

?feed=rss等にアクセスしても配信してないよ!って言われます。
プロフィールの項目を増やしたい
マルチユーザーや会員制サイトとして運営することも有るかと思います。その際、プロフィール欄は使い勝手が良いとは言えません。以下のような項目を増やしてあげるのも良いかも。
// ADD CONTACT CUSTOM FIELDS
$contactmethods['contact_phone_office'] = '会社電話番号';
$contactmethods['contact_phone_mobile'] = '携帯電話番号';
$contactmethods['contact_office_fax'] = 'FAX';
// ADD ADDRESS CUSTOM FIELDS
$contactmethods['address_line_1'] = '国';
$contactmethods['address_line_2'] = '都道府県';
$contactmethods['address_city'] = '市町村';
$contactmethods['address_state'] = '番地';
$contactmethods['address_zipcode'] = '郵便番号';
return $contactmethods;
}
add_filter('user_contactmethods','my_custom_userfields',10,1);
実装例

いっぱい増えた!
とまぁ、こんな情報が79ある、というスレッドがBest Collection of Code for your functions.php fileです。なんて便利。英語ですけど機械翻訳で十分理解できると思うのでテストしてみてください。RSSもあるので登録しておけば回答が加わればすぐに知ることも出来ますな。
ただし、公式フォーラムで無いことを踏まえて利用してくださいね。プラグインで手軽にできるならその方が良い場合もあります。因みに、このスレッド以外にも良情報満載ですので英語問題なければ要チェックサイトですよ。
スレ:Best Collection of Code for your functions.php file
サイト:WordPress Answers
