またまたWordPressネタ。毎回調べたり、ソースを引っ張ってくるのが大変なので、
備忘録兼自分用メモ。必ずと言っていいほどインストールするプラグインと、
wp-config.phpとfunctions.phpで設定することのまとめ。
今回のまとめは、ブログサイトではなく、コーポレートサイトやショップサイトなどの非ブログサイトを作成するときの初期設定です。ブログを作るとなるとまたちょっと内容が変わってきます。
というか、ブログを作るならここまでしませんw
まずは、プラグイン編。
ホントは全部functions.phpでやるか、統合したプラグインを開発すべきなのですが・・・・
コピペプログラマには敷居が高すぎるので、毎回お世話になってるプラグイン。
Adminimize
権限に応じて管理画面の表示を細かく設定できる。User Role Editorと組み合わせて使います。
User Role Editor
デフォルトの権限の他にオリジナルの権限を作成。Adminizeで作成した権限のメニュー等を隠したりして余計なものを表示させないようにします。
Advanced Custom Fields
カスタムフィールドをこれでもかってくらいに拡張します。これがないと仕事になりません・・・。
ぼくは使ってませんが有料のAdvanced Custom Fields用プラグインでさらに便利になります。
brBrbr
投稿画面の改行をそのまま表示させるために必須。
Custom Post Type UI
カスタム投稿タイプとカスタムタクソノミーをphpを書かなくても管理できます。
PS Taxonomy Expander
あまり使わないけど、更新したいページが多い場合は、投稿のカテゴリ、カスタム投稿タイプ、さらにカスタムタクソノミーで細かく管理。
Disable All WordPress Updates
アップデートの通知をすべて非表示にする。クライアントには必要ない情報なので。
EWWW Image Optimizer
クライアントがファイルを画像アップロードするサイトの場合は、圧縮とかリサイズとかしてくれないので、デジカメサイズをそのままアップロードされたりします。少しでもサーバーの負担軽減のために圧縮します。
WP-Optimize
定期的にDBを最適化。更新が頻繁なサイトだとどうしてもDBにゴミファイルが溜まっていきます。ゴミファイルがたまってしまうとレスポンスの低下、最悪はクラッシュを招くので定期的にお掃除してもらいます。
Google XML Sitemaps
検索ロボット用にsitemap.xmlを自動作成。
WP-PageNavi
何かとページングを使うことが多いのでデフォルトで入れておきます。簡単なページングならブラウザ側で処理。データ量や構成を考えてサーバー側で処理させる場合はこれ一択。
ちなみによく動かないことがありますが、その際はwp_head()とwp_footer()があるかをチェケラッチョして下さい。
ちなみに説明がかなり簡素です。それぞれ素晴らしいプラグインで、ほかのブロガーの皆様が超わかりやすく丁寧に書いてくださってるので使う際はそちらをご参照下さい。
次に、どのテーマを作ってもだいたいfunctions.phpに書くこと。
余分なwordpressから自動で吐かれるタグの削除
1 2 3 4 5 6 7 8 | //余分なwordpressから自動で吐かれるタグの削除 remove_action('wp_head','rel_canonical'); remove_action('wp_head','feed_links',2); remove_action('wp_head','feed_links_extra',3); remove_action('wp_head','adjacent_posts_rel_link_wp_head',10); remove_action('wp_head','wlwmanifest_link'); remove_action('wp_head','rsd_link'); remove_action('wp_head','wp_generator'); |
※余分なタグにはWordPressで作ってるよーっと吐き出すものがあります。セキュリティ上好ましくないので削除するべきだと思います。
管理画面用CSS
1 2 3 4 5 6 7 | //管理画面用CSS functionadmin_css_custom(){ echo'<style> //ここに管理画面用のスタイルを書いていきます。 </style>'; } add_action('admin_print_styles','admin_css_custom'); |
サムネイルサイズを追加
1 2 3 4 5 6 | //add_image_size( $name, $width, $height, $crop ) //$name ... サイズ名:アルファベットが安心 例)'my-original-size' //$width ... 画像の幅:整数,ピクセル単位 //$height ... 画像の高さ:整数,ピクセル単位 //$crop ... 縮小しないで中央を切り抜く(true)か否か(false):true または false //add_image_size('pickupImg', 200, 200, false); |
管理画面フッターのWordPressへのリンクを削除
1 2 3 4 5 | // フッターWordPressリンクを非表示に functioncustom_admin_footer(){ echo''; } add_filter('admin_footer_text','custom_admin_footer'); |
管理バーにログアウトを表示
1 2 3 4 5 6 7 8 9 10 | // 管理バーにログアウトを追加 functionadd_new_item_in_admin_bar(){ global$wp_admin_bar; $wp_admin_bar->add_menu(array( 'id'=>'new_item_in_admin_bar', 'title'=>__('ログアウト'), 'href'=>wp_logout_url() )); } add_action('wp_before_admin_bar_render','add_new_item_in_admin_bar'); |
タイトルを入力して下さい。の文言を変更
1 2 3 4 5 6 7 8 9 | //タイトル入力フォームのテキストを変更 //function change_post_enter_title_here($title) { // $screen = get_current_screen(); // if ($screen->post_type == 'post') { // $title = 'ここに入力するとタイトルを入力して下さいと書いてある部分が変わります。'; // } // return $title; //} //add_filter('enter_title_here', 'change_post_enter_title_here'); |
ログイン画面のロゴをオリジナルものへ変更
1 2 3 4 5 6 7 8 9 10 11 12 | //ログイン画面のロゴを変更 //function login_logo() { // echo '<style type="text/css"> // h1 a { // background-image:url('.get_bloginfo('template_directory').'/common/img/wp-login.png)!important; // width:0000px!important; // height:0000px!important; // background-size:100%!important; // } // </style>'; //} //add_action('login_head', 'login_logo'); |
投稿一覧の項目なんかを変更、追加したいとき。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | //投稿一覧の表示カスタマイズ /* function manage_posts_columns($columns) { //タイトル→投稿者とする例 $columns['title'] = "投稿者"; //一覧にカスタムフィールドの値を追記 $columns['img'] = "画像"; $columns['comment'] = "コメント"; return $columns; } function add_column($column_name, $post_id) { if( $column_name == 'comment' ) { echo get_post_meta($post_id, 'comment', true); } if( $column_name == 'author' ) { echo get_post_meta($post_id, 'author', true); } if( $column_name == 'img' ) { $image = get_post_meta($post_id, 'img', true); $thumb = wp_get_attachment_image_src($image, 'thumbnail'); if ( $thumb ) { echo '<img src="'.$thumb[0].'" width="70" />'; } } } add_filter( 'manage_posts_columns', 'manage_posts_columns' ); add_action( 'manage_posts_custom_column', 'add_column', 10, 2 ); */ |
管理画面メニューの投稿という文字を変えたいとき
1 2 3 4 5 6 7 8 9 10 11 | //管理画面の投稿メニュー名を変更 /* function change_post_menu_label() { global $menu; global $submenu; $menu[5][0] = 'ニュース'; $submenu['edit.php'][5][0] = 'ニュース'; $submenu['edit.php'][10][0] = '新規ニュースを追加'; } add_action( 'admin_menu', 'change_post_menu_label' ); */ |
カスタム投稿は検索に含めたくないよってとき
1 2 3 4 5 6 7 8 9 10 11 | // 検索結果から通常投稿以外のページを除外 /* function search_filter($query) { if (!$query -> is_admin && $query -> is_search) { $meta_text = "'%" .mysql_real_escape_string($_REQUEST['s']). "%'"; $query -> set('post_type', 'post'); } return $query; } add_filter('pre_get_posts', 'search_filter'); */ |
検索フィールドで何も入力されないままサブミットされたら全件を表示
1 2 3 4 5 6 | functioncustom_search($search,$wp_query){ //query['s']があったら検索ページ表示 if(isset($wp_query->query['s']))$wp_query->is_search=true; return$search; } add_filter('posts_search','custom_search',10,2); |
オリジナルのテーマでカスタムメニュー使うよー!のとき
1 2 | //カスタムメニュー機能追加 add_theme_support('menus'); |
コメントアウトしてあるものはクライアントによっては使うけど、毎回ではないかなーってやつです。
最後にwp-config.phpに書くやつ。
よくやる設定 wp_config.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | //サイトのURLを設定 define('WP_SITEURL','http:yourdomein.com/wp/'); define('WP_HOME','http:yourdomein.com'); //DBの自動修復 define('WP_ALLOW_REPAIR',true); //自動更新の停止 wordpress 3.8 define('AUTOMATIC_UPDATER_DISABLED',true); //キャッシュ無視 //デバッグの際しか使わない //define('MAGPIE_CACHE_ON', 0); //リビジョンの停止 define('WP_POST_REVISIONS',false); |
以上、まずはここから始めるよーっていう設定やらプラグインです。
ここから、カスタマイズや必要に応じて、どうしても手書きできないところだけプラグインで補うようにしています。
冒頭にも書きましたが、プラグインに頼りすぎると、アップデートによるトラブルや逆にコアアップデートするとプラグインが動かなくなるのでできないということが起きますので、可能な限りfunctions.phpを有効に使って構築するべきだと思います。