Googleアナリティクス関連(UA GA4 GTMなど)2022

Filed under: googleAnalytics — kdcs @ 2022年4月28日 木曜日

従来のGoogleアナリティクス
グローバル サイトタグ(gtag.js)を使用して、アプリ + ウェブ プロパティの Google アナリティクス タグをサイトに追加する

<!-- Global site tag (gtag.js) - Google Analytics -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=MEASUREMENT_ID"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());

      gtag('config', 'MEASUREMENT_ID');
    </script>

この手法では複数のGoogle アナリティクス プロパティを追加することが可能

<script async src="https://www.googletagmanager.com/gtag/js?id=MEASUREMENT_ID">
    </script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());

      gtag('config', 'MEASUREMENT_ID');
      gtag('config', 'MEASUREMENT_ID_2');
    </script>

新規で現行ユニバーサルアナリティクスを設定しGA4も導入する場合は、プロパティ作成時に「ユニバーサルアナリティクスプロパティの作成」のトグルを右にして青くすると、さらに設定画面が表示されここで「ウェブサイトのURL」を入力し、「Googleアナリティクス4とユニバーサルアナリティクスのプロパティを両方作成する」にチェックを入れる。

設定を進め、「タグ設定手順」下にある「グローバルサイトタグ(gtag.js)」をクリックすると、GA4用トラッキングコードが出てくるのでコピー。
次にUA用のプロパティをクリック、「トラッキング情報」-「トラッキングコード」を選択してトラッキングコードを表示させ、「 gtag(‘config’, ‘UA-XXXXXXX-Y’);」の部分のみをコピーしてGA4用のコードに貼り付ける。

<!– Global site tag (gtag.js) – Google Analytics –>
<script async src=”https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX”></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag(‘js’, new Date());gtag(‘config’, ‘G-XXXXXXXXXX’’);
gtag(‘config’, ‘UA-XXXXXXXX-Y’);
</script>

WordPress 管理者ユーザーを一覧から非表示にする

Filed under: functions.php,wordpress — kdcs @ 2022年4月26日 火曜日

管理者以外、例えば編集者にユーザー編集権限を与えた場合、その編集者が管理者を編集(権限変更や削除)ができてしまうので管理者以外はユーザー一覧に管理者を表示させないようにする方法。

function.phpに以下記述 xxxxxxはユーザーネーム

//管理者ユーザーを管理者以外のユーザー一覧から非表示にする--------------------------------
add_action('pre_user_query','site_pre_user_query');
function site_pre_user_query($user_search) {
	global $current_user;
	$username = $current_user->user_login;
 
	if ($username == 'XXXXXX') {
	}
 
	else {
	global $wpdb;
    $user_search->query_where = str_replace('WHERE 1=1',
      "WHERE 1=1 AND {$wpdb->users}.user_login != 'XXXXXX'",$user_search->query_where);
  }
}

ユーザー一覧にはユーザー数が表示されるので管理者1名を引いた数を表示させる記述

//管理者以外のユーザー一覧からユーザー数(管理者)を1つ減らす-----------------------------
if (!current_user_can('administrator')) {
add_filter("views_users", "site_list_table_views");
function site_list_table_views($views){
   $users = count_users();
   $admins_num = $users['avail_roles']['administrator'] - 1;
   $all_num = $users['total_users'] - 1;
   $class_adm = ( strpos($views['administrator'], 'current') === false ) ? "" : "current";
   $class_all = ( strpos($views['all'], 'current') === false ) ? "" : "current";
   $views['administrator'] = '<a href="users.php?role=administrator" class="' . $class_adm . '">' . translate_user_role('Administrator') . ' <span class="count">(' . $admins_num . ')</span></a>';
   $views['all'] = '<a href="users.php" class="' . $class_all . '">' . __('All') . ' <span class="count">(' . $all_num . ')</span></a>';
   return $views;
  }
}

新規ユーザー追加時の権限グループ選択肢を制御する

Filed under: functions.php,wordpress — kdcs @ 2022年4月26日 火曜日

通常、ユーザーの追加が行える権限があるのは管理者(administrator)だけだが、編集者(editor)などにユーザーを追加する権限を与えた場合、管理者ユーザーも作成できてしまう。

そこで、編集者に与えたユーザー追加権限には「管理者」など指定した権限を選択できないようにする。

以下、function.phpに記述
コメントアウトで選択肢を選べる
ユーザー追加時の権限制御 admin/user-new.php

//ユーザー追加時に「管理者・編集者・投稿者」を選択できないようにする---------------------
function remove_role_user_new() {
if (!current_user_can('administrator')) {
?><script type="text/javascript">
jQuery(document).ready(function($){
$("option[value='administrator'").remove();//管理者
$("option[value='editor'").remove();//編集者
//$("option[value='author'").remove();//投稿者
//$("option[value='contributor'").remove();//寄稿者
//$("option[value='subscriber'").remove();//購読者
});
</script><?php }
}
add_action( 'admin_head-user-new.php', 'remove_role_user_new' );

ユーザー編集時の権限制御 admin/user-edit.php

//ユーザー編集時に「管理者・編集者・投稿者・寄稿者」を選択できないようにする--------------
function remove_role_user_edit() {
if (!current_user_can('administrator')) {
?><script type="text/javascript">
jQuery(document).ready(function($){
$("option[value='administrator'").remove();//管理者
$("option[value='editor'").remove();//編集者
$("option[value='author'").remove();//投稿者
$("option[value='contributor'").remove();//寄稿者
//$("option[value='subscriber'").remove();//購読者
});
</script><?php }
}
add_action( 'admin_head-user-edit.php', 'remove_role_user_edit' );

ダッシュボードの一般設定でデフォルトの権限グループを制御したい場合

//新規ユーザーのデフォルト権限グループ「管理者・編集者」を選択できないようにする---------
function remove_role_options_general() {
?><script type="text/javascript">
jQuery(document).ready(function($){
$("option[value='administrator'").remove();//管理者
$("option[value='editor'").remove();//編集者
//$("option[value='author'").remove();//投稿者
//$("option[value='contributor'").remove();//寄稿者
//$("option[value='subscriber'").remove();//購読者
});
</script><?php }
add_action( 'admin_head-options-general.php', 'remove_role_options_general' );

WordPress本体の更新通知を非表示 2022

Filed under: functions.php,wordpress — kdcs @ 2022年4月23日 土曜日

どのバージョンからか?WordPress本体の更新通知を非表示にする記述でエラーになる(デバッグモードで)

Notice: Trying to get property 'current' of non-object in

変更前

//本体のアップデート通知を非表示
add_filter("pre_site_transient_update_core", "__return_null");

変更後(下記記述は管理者以外は非表示)

function hide_update_notices() {
  if ( !current_user_can( 'administrator' ) ) { //管理者以外は非表示にする
      remove_action( 'admin_notices', 'update_nag', 3 );
  }
}
add_action( 'admin_init', 'hide_update_notices' );

アドミンバーにある更新アイコンを非表示にする

function hide_adminbar_update_icon() {
  if ( !current_user_can( 'administrator' ) ) { //管理者以外は非表示にする
  global $wp_admin_bar; $wp_admin_bar->remove_menu( 'updates' );
  }
}
add_action( 'wp_before_admin_bar_render', 'hide_adminbar_update_icon' );

WordPress 管理者以外「カテゴリー・タグ」メニューの非表示(カスタム投稿タイプ含む)

Filed under: functions.php,wordpress — kdcs @ 2022年4月21日 木曜日

まず、post_typeがpost(デフォルト投稿タイプ)で、管理者以外カテゴリーとタグのサブメニュー非表示

function.phpに記述

function hide_taxonomy_from_menu() {
  if (!current_user_can('level_10')) {
    global $wp_taxonomies;
    // カテゴリーの非表示
    if ( !empty( $wp_taxonomies['category']->object_type ) ) {
        foreach ( $wp_taxonomies['category']->object_type as $i => $object_type ) {
            if ( $object_type == 'post' ) {
                unset( $wp_taxonomies['category']->object_type[$i] );
            }
        }
    }
    // タグの非表示
    if ( !empty( $wp_taxonomies['post_tag']->object_type ) ) {
        foreach ( $wp_taxonomies['post_tag']->object_type as $i => $object_type ) {
            if ( $object_type == 'post' ) {
                unset( $wp_taxonomies['post_tag']->object_type[$i] );
            }
        }
    }
    return true;
  }
}
add_action( 'init', 'hide_taxonomy_from_menu' );

次にpost_typeがsampleのカスタム投稿タイプでカスタムタクソノミーがsample_categoryの場合

function.phpに記述

function remove_product_category_submenu() {
  if (!current_user_can('level_10')) {
	    remove_submenu_page( 'edit.php?post_type=sample', 'edit-tags.php?taxonomy=sample_category&post_type=sample' );
	}
}
add_action( 'admin_menu', 'remove_product_category_submenu' );

サイト内検索

カテゴリー

最近の投稿

↑上に戻る