Webサイト制作はもっぱらワードプレスで行ってます。毎回仕様が変わったりして調べながらひいひいやってるのですが、毎回対応している部分を備忘的にまとめます。制作ノウハウではないので悪しからず。チェックシートみたいに使おう。
目次
function.phpへの記述
最終的な出力情報や、管理画面での挙動などを決めます。
重要なファイルなのでやることも多いです。
WordPressのプラグインでできることもあるのですが、プラグインは目的以外の処理で若干重くなる気がするので、なるべくこちらに記載する様にしています。
重要なファイルなので必ずバックアップを保存してから作業します。
とりあえずテンプレ的に
remove_action('wp_head', 'wp_generator');//versionの表記を消す
remove_action( 'wp_head', 'feed_links', 2 );
remove_action('wp_head', 'feed_links_extra', 3); //rssフィードを削除
remove_action('wp_head', 'wp_shortlink_wp_head'); //ショートリンク表記削除
remove_action( 'wp_head', 'adjacent_posts_rel_link', 10, 0 );//リンク達も削除
remove_action( 'wp_head', 'wlwmanifest_link' );//外部ツール使わない
remove_action( 'wp_head', 'rsd_link' );//外部ツール使わないてば
add_theme_support( 'post-thumbnails' );//アイキャッチをサポート
add_image_size( 'main_thumb', 720, 480, true );//アイキャッチのサイズを追加
add_filter('jpeg_quality', function($arg){return 100;});//jpgリサイズ時に圧縮しない
add_post_type_support( 'page', 'excerpt' );// 固定ページの抜粋を有効
デフォルトだとWordPressさんは、自動的に色々な情報を出力します。
例えば、現在のWordPressのバージョンとか、外部ツールで記事を編集するためのリンクとかです。必要でないものも多いので、上記をまずfunction.phpに記載してしまいます。
割愛しますがjQuery・CSSの読み込み、Open Graphや、title・descriptionなどの挙動なども、headタグが煩雑にならない様にこちらに記載します。
参考サイト
カスタム投稿タイプの追加
通常のお知らせ記事の他に、スタッフ紹介ページも更新したい。等、記事の種類が複数必要な場合は、カスタム投稿タイプを使います。
add_action( 'init', 'create_post_type' );
function create_post_type() {
register_post_type( 'stylist',
array(
'labels' => array(
'name' => __( 'スタイリスト' ),
'singular_name' => __( 'スタイリスト' )
),
'public' => true,
'has_archive' => true,
'menu_position' => 5,
'supports' => array('title','thumbnail','author','page-attributes')
)
);
register_taxonomy(
'stylist-cat', // タクソノミー名
'stylist', // どのpost_typeか
array(
'hierarchical' => true, // 親子関係
'update_count_callback' => '_update_post_term_count',
'label' => 'スタイリストのカテゴリー',
'singular_label' => 'スタイリストのカテゴリー',
'public' => true,
'show_ui' => true
)
);
}
//パーマリンクをスラッグではなく記事IDに
add_filter( 'post_type_link', 'my_post_type_link', 1, 2 );
function my_post_type_link( $link, $post ){
if ( 'stylist' === $post->post_type ) {
return home_url( '/stylist/' . $post->ID );
} else {
return $link;
}
}
add_filter( 'rewrite_rules_array', 'my_rewrite_rules_array' );
function my_rewrite_rules_array( $rules ) {
$new_rules = array(
'stylist/([0-9]+)/?$' => 'index.php?post_type=stylist&p=$matches[1]',
);
return $new_rules + $rules;
}
上記のコードを追記すれば、「スタイリスト」という投稿タイプを追加できます。クライアントワークではパーマリンクの設定も変えます。
このコードはかなりシンプルな形です。カスタム投稿について詳しく知りたい方は参考サイトを見るとよいです。
参考サイト
カスタム投稿タイプとカスタムタクソノミーまとめ
WordPressのカスタム投稿(ポスト)タイプを作成するまでの手順リスト
その他いろいろ
必要に応じていろいろ追記します。
/** 内部系
==============================*/
//the_excerptのpタグを自動でつけなくする
remove_filter('the_excerpt', 'wpautop');
//抜粋の文字数オーバーした時の後ろの文字列の変更
function new_excerpt_more($more) {
return '...';
}
add_filter('excerpt_more', 'new_excerpt_more');
// 抜粋の文字数制限
function new_excerpt_mblength($length) {
return 78;
}
add_filter('excerpt_mblength', 'new_excerpt_mblength');
//投稿時に使えるショートコードで外部ファイルを参照
function Include_Aboutus($params = array()) {
ob_start();
include(get_theme_root() . '/' . get_template() . "/aboutus.php");
return ob_get_clean();
}
add_shortcode('aboutus', 'Include_Aboutus');
/** ブログ系
==============================*/
// 「続きを読む」を押したときに記事の先頭へ
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');
//コメントフォームから使用できるタグの表記を消す
add_filter("comment_form_defaults","my_special_comment_after");
function my_special_comment_after($args){
$args['comment_notes_after'] = '';
return $args;
}
// 検索対象を投稿記事だけにする
function SearchFilter($query) {
if ($query->is_search) {
$query->set('post_type', 'post');
}
return $query;
}
add_filter('pre_get_posts','SearchFilter');
// 検索で全角スペースを有効にする
if(isset($_GET['s'])) $_GET['s']=mb_convert_kana($_GET['s'],'s','UTF-8');
/** 記事投稿系
==============================*/
//画像を投稿した時のwidth,height,titleを削除
function my_remove_img_attr($html, $id, $alt, $title, $align, $size){
$html = preg_replace('/ width="\d+"/', '', $html);
$html = preg_replace('/ height="\d+"/', '', $html);
$html = preg_replace('/ title=".+"/', '', $html);
return $html;
}
add_action( 'get_image_tag', 'my_remove_img_attr', 1 ,6);
/** 小技系
==============================*/
//管理画面で下部に表示されるメッセージを変える
function remove_footer_admin () {
echo 'お問い合わせは<a href="https://dekikotu.com" target="_blank">xxx</a>まで';
}
//特定のプラグイン更新通知停止 プラグインのコアファイルをいじるときに。
function filter_hide_update_notice($data) {
if (isset($data->response['polylang/polylang.php'])) {
unset($data->response['polylang/polylang.php']);
}
return $data;
}
add_filter('site_option__site_transient_update_plugins', 'filter_hide_update_notice');
function.phpでできることは本当に色々あるのですが、WordPressでWebサイトを制作し続けていると、自分のよく使うものが見えてくると思います。
「こういうのできないかしら」→検索の繰り返しで引き出しが増えていきます。グッドラック
管理画面での設定
WordPressの管理画面の設定、結構色々ありますが、やることは大体決まっています。
基本的な設定
サイト名
「設定」→「一般」から。SEO的にも超重要です。頑張っていい名前をつけましょう。
これからブログを始める人はブログ名をもう少し考えた方がいいと思う
1ページの記事数を決める
「設定」→「表示」から。テスト段階のときは、ついでに「検索エンジンがサイトをインデックスしないようにする」にチェックを入れておきましょう(公開時は必ずチェックを外すこと!)。
パーマリンク設定を変える
「設定」→「パーマリンク設定」から。記事の更新を納品先の方が行う場合は、スラッグ入力の手間を省く(入力を忘れた時に日本語のURLになるのを防ぐ)ため、記事IDに設定しています。
※必ずスラッグ入力ができるのであれば、アクセス解析ツールでページ内容の把握がしやすかったりするので、こちらがおすすめです。
ユーザー設定を変える
新しいユーザーを追加するときは、「ユーザー」から、「サイトを見るときにツールバーを表示する」のチェックを外しておくと、一般の閲覧者さんと同じ見た目でサイトを確認できます。
隠し設定 「options.php」
ログイン後、URL欄の「/wp-admin/」以下に「/wp-admin/options.php」と入力すると、普通の設定では変えられないところまでいじれるようになるのです。
画像投稿時のリンクやサイズのデフォルトを設定します。
- image_default_align:none
- image_default_link_type:none
- image_default_size:full
にそれぞれ設定します。
プラグインの使用
便利なプラグインがたくさんあります。
WP Multibyte Patch
デフォルトで入っているプラグインの一つです。WordPressに日本語を正しく認識してもらうためにonにします。
カスタムフィールドテンプレート
お客さんが記事を更新する際に、商品仕様など、あらかじめ決まっている項目を入力してもらうのに便利なプラグインです。
参考サイト
AddQuicktag
同じく記事入力補助系のプラグインです。function.phpでもタグの追加は可能ですが、便利なので使うのです。
Contact Form 7
コンタクトフォーム系プラグインの定番です。いろいろとカスタマイズも可能です。
Revision Control
放っておくとリビジョンがどんどん溜まって精神衛生上よくないので使います。
TypePad 絵文字 for TinyMCE
ブログ記事で、絵文字を使いたいという要望をいただくことがあります。そんなときはこのプラグインを使っています。
参考サイト
WordPressプラグイン TypePad 絵文字 for TinyMCE
WordPressの記事にビジネス向け絵文字を使う方法。
以上です。「もっとこうした方がいい」とか、他の人がまとめた記事とかあったら是非是非教えてくださいませませ。では、よいWeb制作ライフを。













