Wordpressのfunction.php個人的メモ(2018.01.01改訂)

Wordpressで構築するときにfunction.phpに記述するやつをその都度調べるのが面倒だったのでめも。

/* - - - - - - - - - - - - - - - - - - - - - 
/* カスタム投稿タイプ設定
//////////////////////////*/

function txt() {
$labels = array(
'name' => 'txt',
'singular_name' => 'txt一覧',
'add_new_item' => 'txtを追加',
'add_new' => 'txtを追加',
'new_item' => 'txt',
'view_item' => 'txt一覧を表示',
'not_found' => 'txtは見つかりませんでした',
'not_found_in_trash' => 'txtはありません。',
'search_items' => 'txtを検索'
);
$args = array(
'labels' => $labels,
'public' => true,
'show_ui' => true, 
'query_var' => true,
'hierarchical' => false,
'menu_position' => 5,
'has_archive' => true,
'supports' => array('title','editor'),
'taxonomies' => array('txt_list')
); 
register_post_type('txt', $args);
//カテゴリー追加する場合
$args = array(
'label' => 'カテゴリー',
'public' => true,
'show_ui' => true,
'hierarchical' => true,
'show_admin_column' => true
);
register_taxonomy('txt_list','txt',$args);
//カテゴリー追加する場合ここまで
}
add_action('init', 'txt');

/* - - - - - - - - - - - - - - - - - - - - - 
/* メニュー位置の変更
//////////////////////////*/
/*
function customize_menus(){
global $menu;
$menu[19] = $menu[10];  //メディアの移動
unset($menu[10]);
}
add_action( 'admin_menu', 'customize_menus' );
*/
/*
投稿が$menu[5]
メディアが$menu[10]
固定ページが$menu[20]
*/

/* - - - - - - - - - - - - - - - - - - - - - 
/* デフォルト「投稿」の名称変更
//////////////////////////*/

/*
function change_post_menu_label() {
global $menu;
global $submenu;
$menu[5][0] = '店舗情報';
$submenu['edit.php'][5][0] = '店舗情報一覧';
$submenu['edit.php'][10][0] = '店舗情報を追加';
$submenu['edit.php'][16][0] = 'タグ';
}
function change_post_object_label() {
global $wp_post_types;
$labels = &$wp_post_types['post']->labels;
$labels->name = '店舗情報';
$labels->singular_name = '店舗情報';
$labels->add_new = _x('店舗情報を追加', '店舗情報');
$labels->add_new_item = '店舗情報を追加';
$labels->edit_item = '店舗情報の編集';
$labels->new_item = '店舗情報を追加';
$labels->view_item = '店舗情報を表示';
$labels->search_items = '店舗情報検索';
$labels->not_found = '店舗情報が見つかりませんでした';
$labels->not_found_in_trash = 'ゴミ箱の店舗情報にも見つかりませんでした';
}
add_action( 'init', 'change_post_object_label' );
add_action( 'admin_menu', 'change_post_menu_label' );
*/

/* - - - - - - - - - - - - - - - - - - - - - 
/* js/css読み込み設定
//////////////////////////*/

/* - - - jsの登録 - - - */
function register_script() {
/* デフォルトjquery登録解除 */
wp_deregister_script('jquery');
/* 読み込み */
wp_register_script( 'jquery',   get_template_directory_uri() . '/js/jquery-3.1.0.min.js', array(), NULL, false );
wp_register_script( 'basic',    get_template_directory_uri() . '/js/basic.js', array('jquery'), NULL, false );
}

/* - - - jsの読み込み指定 - - - */
function add_script() {
register_script();

/* 共通 */
wp_enqueue_script('jquery');
wp_enqueue_script('basic');

/* 個別指定 */
//if( is_home() ) {
//}
//else if( is_archive() || is_tax() )
//}
}
add_action('wp_print_scripts', 'add_script', 5 );

/* - - - cssの登録(style.css以外で登録するものがあれば) - - - */
function register_style() {
wp_register_style( 'styles',    get_template_directory_uri() . '/style.css', array(), NULL, 'all' );
}

/* - - - cssの読み込み指定 - - - */
function add_style() {
register_style();

/* 共通 */
wp_enqueue_style('styles');

/* 個別指定 */
//if( is_home() ) {
//}
//else if( is_archive() || is_tax() )
//}
}
add_action('wp_print_styles', 'add_style', 5 );

/* - - - - - - - - - - - - - - - - - - - - - 
/* テンプレート出力表記設定
//////////////////////////*/

/* - - - wp_head(); 出力表記削除 - - - */

/* バージョン表記削除 */
//metaタグ
remove_action('wp_head','wp_generator');
//css,jsパラメータ
function vc_remove_wp_ver_css_js( $src ) {
if ( strpos( $src, 'ver=' ) )
$src = remove_query_arg( 'ver', $src );
return $src;
}
add_filter( 'style_loader_src', 'vc_remove_wp_ver_css_js', 9999 );
add_filter( 'script_loader_src', 'vc_remove_wp_ver_css_js', 9999 );

/* 絵文字表記削除 */
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'wp_print_styles', 'print_emoji_styles' );

/* ページ間の関係を示すタグを削除 */
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head');

/* URLの正規化タグ削除 */
remove_action('wp_head', 'rel_canonical');

/* 短縮URL削除 */
remove_action('wp_head', 'wp_shortlink_wp_head');

/* feed削除 */
remove_action('wp_head', 'feed_links_extra', 3);
//サイト全体feedいらない場合
remove_action('wp_head', 'feed_links', 2);

/* ブログ投稿ツールを使わない場合 */
remove_action('wp_head', 'rsd_link');
remove_action( 'wp_head', 'wlwmanifest_link' );

/* Embed系削除 */
remove_action('wp_head','rest_output_link_wp_head');
remove_action('wp_head','wp_oembed_add_discovery_links');
remove_action('wp_head','wp_oembed_add_host_js');

/* DNSプリフェッチ削除 */
function remove_dns_prefetch( $hints, $relation_type ) {
        if ( 'dns-prefetch' === $relation_type ) {
                return array_diff( wp_dependencies_unique_hosts(), $hints );
        }
        return $hints;
}
add_filter( 'wp_resource_hints', 'remove_dns_prefetch', 10, 2 );

/* - - - - - - - - - - - - - - - - - - - - - 
/* 管理画面表記設定
//////////////////////////*/

/* 絵文字表記削除 */
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'admin_print_styles', 'print_emoji_styles' );

/* 固定ページ・投稿ページにアイキャッチ画像を追加 */
add_theme_support( 'post-thumbnails' ); 
//set_post_thumbnail_size( 1300, 150, false );//サイズ

/* 空タグを削除 */
/* remove_filter ('the_content', 'wpautop'); */
//自動生成するpタグやbrタグを固定ページだけ取り除く
remove_filter('the_content','wpautop');
add_filter('the_content','custom_content');
function custom_content($content){
if(get_post_type()=='page') 
return $content;
else
return wpautop($content);
}

/* アップデート告知masterのみ記載 */
function update_nag_admin_only() {
if ( ! current_user_can( 'administrator' ) ) {
remove_action( 'admin_notices', 'update_nag', 3 );
}
}
add_action( 'admin_init', 'update_nag_admin_only' );

/* ダッシュボードから削除 */
function example_remove_dashboard_widgets() {
global $wp_meta_boxes;
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']);    // 現在の状況
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_thanks']);   // 
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_activity']);     // 
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_comments']);  // 最近のコメント
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']);   // 被リンク
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']);  // プラグイン
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']);    // クイック投稿
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_recent_drafts']);  // 最近の下書き
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);    // WordPressブログ
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);  // WordPressフォーラム
}
add_action('wp_dashboard_setup', 'example_remove_dashboard_widgets');

/* メニューから削除 */
function remove_menus () {
global $menu;
unset($menu[5]);  // 投稿
}
add_action('admin_menu', 'remove_menus');

/* 投稿画面から削除 */
function remove_post_supports() {
// remove_post_type_support( 'post', 'title' ); // タイトル
// remove_post_type_support( 'post', 'editor' ); // 本文欄
remove_post_type_support( 'post', 'author' ); // 作成者
//remove_post_type_support( 'post', 'thumbnail' ); // アイキャッチ
remove_post_type_support( 'post', 'excerpt' ); // 抜粋
remove_post_type_support( 'post', 'trackbacks' ); // トラックバック
remove_post_type_support( 'post', 'custom-fields' ); // カスタムフィールド
remove_post_type_support( 'post', 'comments' ); // コメント
remove_post_type_support( 'post', 'revisions' ); // リビジョン
remove_post_type_support( 'post', 'page-attributes' ); // ページ属性
remove_post_type_support( 'post', 'post-formats' ); // 投稿フォーマット

//unregister_taxonomy_for_object_type( 'category', 'post' ); // カテゴリ
unregister_taxonomy_for_object_type( 'post_tag', 'post' ); // タグ
}
add_action( 'init', 'remove_post_supports' );

/* 投稿画面から不要な枠(メタボックス)を消す */
/*
function remove_post_meta_boxes() {
remove_meta_box( 'slugdiv', 'post', 'normal' ); // スラッグ
remove_meta_box( 'submitdiv', 'post', 'side' ); // 公開
}
add_action( 'admin_menu', 'remove_post_meta_boxes' );
*/

/* - - - 投稿画面のボタン削除 - - - */

/* ビジュアルエディタ */
function tinymce_delete_buttons( $array ) {
$array = array_diff($array, array('italic', 'underline', 'strikethrough', 'bullist', 'numlist', 'blockquote', 'alignleft', 'aligncenter', 'alignright', 'wp_more', 'fullscreen', 'wp_adv'));
return $array;
}
add_filter( 'mce_buttons', 'tinymce_delete_buttons' );
//管理画面の「見出し1」等を削除する
function custom_editor_settings( $initArray ){
$initArray['block_formats'] = "段落=p; 見出し4=h4;";
return $initArray;
}
add_filter( 'tiny_mce_before_init', 'custom_editor_settings' );

/* テキストエディタ */
function et_print_styles() {
echo '<style TYPE="text/css">
#qt_content_block,
#qt_content_del,
#qt_content_ins,
#qt_content_img,
#qt_content_ul,
#qt_content_ol,
#qt_content_li,
#qt_content_code,
#qt_content_more,
#qt_content_fullscreen {
display:none !important;
}
</style>';
}
add_action('admin_print_styles', 'et_print_styles', 21);

// カテゴリー追加部分削除
function hide_category_tabs_adder() {
global $pagenow;
global $post_type;
if (is_admin() && ($pagenow=='post-new.php' || $pagenow=='post.php')){
echo '<style type="text/css">
#category-tabs, #category-adder {display:none;}

.categorydiv .tabs-panel {padding: 0 !important; background: none; border: none !important;}
</style>';
}
}
add_action( 'admin_head', 'hide_category_tabs_adder' );

/* - - - xml-rpcを無効化 - - - */
add_filter('xmlrpc_enabled', '__return_false');

/* - - - - - - - - - - - - - - - - - - - - - 
/* SP判別
//////////////////////////*/

/*
function is_mobile(){
$useragents = array(
'iPhone', // iPhone
'iPod', // iPod touch
'Android.*Mobile', // 1.5+ Android *** Only mobile
'Windows.*Phone', // *** Windows Phone
'dream', // Pre 1.5 Android
'CUPCAKE', // 1.5+ Android
'blackberry9500', // Storm
'blackberry9530', // Storm
'blackberry9520', // Storm v2
'blackberry9550', // Storm v2
'blackberry9800', // Torch
'webOS', // Palm Pre Experimental
'incognito', // Other iPhone browser
'webmate' // Other iPhone browser
);
$pattern = '/'.implode('|', $useragents).'/i';
return preg_match($pattern, $_SERVER['HTTP_USER_AGENT']);
}
*/