お問い合わせ頂いたので記事にします。
WordPressのfunctions.phpは便利なの
はよく分かりますが、結局何が出来るの
か分からないのでこんな事できる、という
のがあれば教えて欲しいとのことでした。
僕も詳しくないので僕も教えて欲しいんです
が、一応書いてみます。
基本的にfunctions.phpはちょっと機能を追加したい、という時に使うものだと思うのでデフォルト機能やプラグインで済むならそうしたほうがいい気がしますのであまり拘らなくてもいいかと思います。
それでも、やはりお仕事ではよく追加する機能はありますのでそれをご紹介します。
※ウィジェットは割愛しますね
カスタムポストタイプ
add_action( 'init', 'create_post_type' ); function create_post_type() { register_post_type( 'example', array( 'labels' => array( 'name' => __( 'テスト' ), 'singular_name' => __( 'テスト' ) ), 'public' => true, 'menu_position' =>3, ) ); }
カスタム投稿タイプを使ったほうがお客さんは更新しやすいみたいです。使い方はWebデザインレシピさんの記事見てくださいまし。
アイキャッチ
add_theme_support( 'post-thumbnails', array( 'post', 'example' ) );
投稿とカスタムポストタイプ(上記コードではexample)をアイキャッチに対応させます。「ページ」はアイキャッチは要らないのでいつも入れていません。
ヘッダの余計なタグを無効化
remove_action( 'wp_head', 'feed_links_extra', 3 ); remove_action( 'wp_head', 'feed_links', 2 ); remove_action( 'wp_head', 'rsd_link' ); remove_action( 'wp_head', 'wlwmanifest_link' ); remove_action( 'wp_head', 'index_rel_link' ); remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 ); remove_action( 'wp_head', 'start_post_rel_link', 10, 0 ); remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 ); remove_action( 'wp_head', 'wp_generator' );
functions.php内がゴチャつくのも問題なので個人サイトではやりませんけど・・head内に挿入されるlink rel=’start’とかを削除してすっきりさせます。
[note]ご自身で選びたい場合はwp-includes/default-filters.php内の197行目くらいを確認すればいいんじゃないかと思いますが、プラグインに影響出るかもなので慎重に行なってください。※WP3.1の場合[/note]
ダッシュボードにメッセージボックスを作る
add_action('wp_dashboard_setup', 'my_custom_dashboard_widgets'); function my_custom_dashboard_widgets() { global $wp_meta_boxes; wp_add_dashboard_widget('custom_help_widget', '今日のお知らせ', 'dashboard_text'); } function dashboard_text() { echo '<p>うちのワンコ、今日はマジご機嫌。</p>'; }
iframeでいろいろ表示させたり、見てもらいたいサイトに誘導したり、みたいな。これ作っておくと地味に便利なんです。↓こんなやつ。
「投稿」「ページ」の不要なコンテンツを非表示
function remove_default_post_screen_metaboxes() { remove_meta_box( 'postcustom','post','normal' ); // カスタムフィールド remove_meta_box( 'postexcerpt','post','normal' ); // 抜粋 remove_meta_box( 'commentstatusdiv','post','normal' ); // コメント remove_meta_box( 'trackbacksdiv','post','normal' ); // トラバ remove_meta_box( 'slugdiv','post','normal' ); // スラッグ remove_meta_box( 'authordiv','post','normal' ); // 著者 } add_action('admin_menu','remove_default_post_screen_metaboxes'); function remove_default_page_screen_metaboxes() { remove_meta_box( 'postcustom','page','normal' ); // カスタムフィールド remove_meta_box( 'postexcerpt','page','normal' ); // 抜粋 remove_meta_box( 'commentstatusdiv','page','normal' ); // コメント remove_meta_box( 'trackbacksdiv','page','normal' ); // トラバ remove_meta_box( 'slugdiv','page','normal' ); // スラッグ remove_meta_box( 'authordiv','page','normal' ); // 著者 } add_action('admin_menu','remove_default_page_screen_metaboxes');
「投稿」、「ページ」で使ってない機能は消します。以下のようにすっきりするので気のせいかもですが、ページの読み込みも早くなる気がします。多分気のせい。
moreリンクの#を無効化
function custom_content_more_link( $output ) { $output = preg_replace('/#more-[\d]+/i', '', $output ); return $output; } add_filter( 'the_content_more_link', 'custom_content_more_link' );
これは個人的には凄く不要なのでいつも入れます。
その他
管理画面をいじったりしますが、これは以前記事にしたのでご参照下さい。
一応よく追加するのはこれくらいです。
他にもよく追加する機能としてカスタムフィールドを使って出来るなにかを作ったり、テーマ独自のオプションを作ったり。以前作ったテーマ・WP-Tubularのように、管理画面でテーマに変更を加えるようなものですが、これらは上記のように全てのテーマに共通するものではないので今回は省きました。
僕もそんな詳しくないので色々な方の方法を参考にしたほうがいいと思います。
via:snipplr