functions.phpに汎用的に使える内容 - samidevjp/Tips GitHub Wiki

使わないメニューを非表示


// ダッシュボードの不要項目削除
function remove_dashboard_widget() {
	remove_meta_box('dashboard_right_now','dashboard','normal'); // 概要
	remove_meta_box('dashboard_activity','dashboard','normal'); // アクティビティ
	remove_meta_box('dashboard_quick_press','dashboard','side'); // クイックドラフト
	remove_meta_box('dashboard_primary','dashboard','side'); // WordPressニュース
	} 
	add_action('wp_dashboard_setup','remove_dashboard_widget');
// サイドメニューを非表示
function remove_menus() {
    remove_menu_page( 'edit.php' ); // 投稿
    remove_menu_page( 'edit-comments.php' ); // コメント
    if ( ! current_user_can( 'administrator' ) ) {
        remove_menu_page( 'edit.php?post_type=page' );   //固定ページ
    }
  }
  add_action( 'admin_menu', 'remove_menus', 999 );

WordPressのバージョンを非表示

remove_action('wp_head','wp_generator');

自動更新を無効にする

add_filter( 'automatic_updater_disabled', '__return_true' );

ダッシュボードからマニュアルを見られるようにする

function add_dashboard_widgets() {
	wp_add_dashboard_widget(
	  'quick_action_dashboard_widget', // ウィジェットのスラッグ名
	  'クイックアクション', // ウィジェットに表示するタイトル
	  'dashboard_widget_function' // 実行する関数
	);
}
add_action( 'wp_dashboard_setup', 'add_dashboard_widgets' );
function dashboard_widget_function() {
	?>
<ul class="quick-action">
    <li>
        <a href="/doc/manual.pdf" target="_blank" class="quick-action-button">
            <span class="dashicons-before dashicons-book"></span>
            マニュアルを見る
        </a>
        <p> => サイト更新についてのpdfファイルをこちらからご覧いただけます。</p>
    </li>
</ul>
<?php
}

ログイン画面のロゴ変更・リンク先をTOPページに

function login_logo() {
	echo '<style type="text/css">.login h1 a {background-image: url('.get_bloginfo('template_directory').'/img/common/logo_black.png);width:300px;height:80px;    background-size: 300px;}</style>';
}
add_action('login_head', 'login_logo');

// ログイン画面のロゴURL
function custom_login_logo_url() {
	return get_bloginfo( 'url' );
}
add_filter( 'login_headerurl', 'custom_login_logo_url' );

// ログイン画面のロゴタイトル
function custom_login_logo_url_title() {
	return 'トップページを表示';
}
add_filter( 'login_headertitle', 'custom_login_logo_url_title' );

ドメイン/?author=1 などが入力されたらTOPへリダイレクトさせる


function disable_author_archive_query() {
    if( preg_match('/author=([0-9]*)/i', $_SERVER['QUERY_STRING']) ){
        wp_safe_redirect( home_url() );
        exit;
    }
}
add_action('init', 'disable_author_archive_query');

固定ページの削除禁止処理

//ゴミ箱に移動する直前に実行する
add_action( "wp_trash_post", "no_delete_page",1,1 );
function no_delete_page($post_id) {
    global $post_type;
    
    //固定ページのみ対象
    if($post_type == 'page'){
        //削除したくないページIDを配列に格納
        $no_delete_page_lists = array("7","12");
        
        if(in_array($post_id, $no_delete_page_lists)){
            if(!strpos(wp_get_referer(), 'notrash=1')){
                $no_trash_flag = '&notrash=1';
            }
            wp_redirect( wp_get_referer() . $no_trash_flag );
            exit();
        }
    }
}
//エラーメッセージ表示処理
add_action('admin_notices', 'trash_notice');
function trash_notice(){
    //パラメータがある時にメッセージを表示
    if(strpos(getenv('REQUEST_URI'), 'notrash=1')){
        echo '<div class="message error"><p>投稿IDをテンプレートで使用しているため、選択されたページを削除することはできません。削除禁止処理はfunctions.phpにて編集可能です。</p></div>';
    }
}

投稿の一覧画面でステータスに合わせて背景色を変更

function post_background_change() {
	?> <style type="text/css">
/* 下書き */
.status-draft {
    background: #EBF1F7 !important;
}

/* 非公開 */
.status-private {
    background: #F4F7DF !important;
}

/* 予約済み */
.status-future {
    background: #F7E1DF !important;
}
</style> <?php }
	add_action( 'admin_head', 'post_background_change' );

画質調整

// 画質調整
add_filter( 'jpeg_quality', function( $arg ){ return 100; } );

投稿タイプによって投稿表示件数を変える

add_action( 'pre_get_posts', 'my_custom_query_vars' );
function my_custom_query_vars( $query ) {
	/* @var $query WP_Query */
	if ( !is_admin() && $query->is_main_query()) {
		if ( is_post_type_archive('gallery') ) {
			$query->set( 'posts_per_page' , 18 );//表示したい数
		}else{}
	}
	return $query;
}

上位権限がメディアにアップロードした画像を消させないようにする

function restrict_media_deletion_capability() {
    $current_user = wp_get_current_user();
    
    // 管理者以外の場合に制限を適用
    if (!current_user_can('administrator')) {
        // 上位の権限を持つユーザーロールを取得
        $user_roles = array('editor', 'author'); // 削除を制限したい上位ユーザーロールを指定
        
        // 上位の権限を持つユーザーロールに対して削除権限を剥奪
        foreach ($user_roles as $role) {
            $user_role = get_role($role);
            $user_role->remove_cap('delete_posts');
            $user_role->remove_cap('delete_published_posts');
        }
    }
}
add_action('admin_init', 'restrict_media_deletion_capability');
⚠️ **GitHub.com Fallback** ⚠️