WordPressでよく利用するfunctions.phpのカスタマイズ

WordPressでよく利用するfunctions.phpのカスタマイズをまとめてみました。
コピペ等される場合、必ずバックアップしてください。

管理画面の不必要なメニューを削除

外観をメニューから削除したい場合

function remove_menus() {
remove_submenu_page('themes.php'); // 外観
}
add_action('admin_menu', 'remove_menus');

外観のカスタマイズをメニューから削除したい場合

function remove_menus() {
remove_submenu_page('themes.php','customize.php'); // 外観>カスタマイズ
}
add_action('admin_menu', 'remove_menus');

抜粋の「続きを読む」を整形

function new_excerpt_more($more) {
    global $post;
    return '...<span class="c_more">MORE</span>';
}
add_filter('excerpt_more', 'new_excerpt_more');

抜粋の文字数

抜粋を40文字にする場合

function change_excerpt_mblength($length) {
return 40;  // 40文字
}
add_filter('excerpt_mblength', 'change_excerpt_mblength');

headerの不必要なmetaタグを削除

個々で必要かどうかはご判断ください。

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' ); 

管理バーを非表示

管理画面のユーザーメニューから非表示に設定出来ますが、最初から非表示にしておきます。

function my_function_admin_bar(){
return false;
}
add_filter( 'show_admin_bar' , 'my_function_admin_bar');

WordPress本体の更新通知を管理画面に非表示

add_filter('pre_site_transient_update_core', '__return_zero');
remove_action('wp_version_check', 'wp_version_check');
remove_action('admin_init', '_maybe_update_core');

WordPressプラグインの更新通知を管理画面に非表示

remove_action( 'load-update-core.php', 'wp_update_plugins' );
add_filter( 'pre_site_transient_update_plugins', create_function( '$a', "return null;" ) );

テキストの自動整形解除

固定ページ等にHTMLで記載していきたい場合等に使います。改行やPタグが自動で入りません。
投稿にも適用されるので、あくまでもクライアントから要望があればになります。

remove_filter('the_content', 'wpautop');

絵文字関連のscriptを削除

絵文字が必要ないなら。

remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'admin_print_styles', 'print_emoji_styles' );

固定ページに抜粋を加える

タイトルの下などに説明として加えるといい感じになるかも。

add_post_type_support( 'page', 'excerpt' );

テーマをアイキャッチ対応にする

function mysetup() {
  add_theme_support( 'post-thumbnails' );
  add_image_size( 'thumb200', 200, 200, true );
}
add_action( 'after_setup_theme', 'mysetup' );

投稿スラッグを日本語ではなく任意にする

ここでは、time()を使って時間にしています。

function auto_post_slug($slug, $post_ID, $post_status, $post_type) {
    if ($post_type == 'post'){
        $slug = time();
        }
    return $slug;
    }
add_filter( 'wp_unique_post_slug', 'auto_post_slug', 10, 4 );

投稿(添付メディアページ)のポストネームを任意にする

こちらは投稿スラッグではなく、投稿(添付メディアページ)名です。だいぶマニアックなのでフロントエンド系のサイトでしか使いませんが一応。

add_action( 'add_attachment', 'wpse_70093_modify_uploaded_file_title' );
function wpse_70093_modify_uploaded_file_title( $attachment_ID ) 
{
    $the_post = array();
    $the_post['ID'] = $attachment_ID;
    $the_post['post_name'] = 'attachment-'.$attachment_ID;
    wp_update_post( $the_post );
}

権限の変更

以下の例ではID9999を管理者権限に変更しています。

function set_user_role() {
	$user = new WP_User( 9999 );
	$user->set_role( 'administrator');
}
add_action( 'init', 'set_user_role' );

以上、まとめてみました。