過去記事はこちら
header.phpに直接記述する場合
<link rel="canonical" href="<?php echo (empty($_SERVER["HTTPS"]) ? "http://" : "https://") . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]; echo '">';echo "\n"; ?>
過去記事はこちら
header.phpに直接記述する場合
<link rel="canonical" href="<?php echo (empty($_SERVER["HTTPS"]) ? "http://" : "https://") . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]; echo '">';echo "\n"; ?>
レンタルサーバーの仕様変更に伴うXAMPP改造 第2弾
ロリポの新規データベースがMysql5.7になり、2022年7月頃phpのモジュール版が7.4から8.1になるためローカルテスト環境の整備。
XAMPPのMariaDBをMysql5.7にする手順
※XAMPPのバージョンは8.1.2
※Mysqlのバージョンは5.7.25
【重要】
手順は以下の通りで多分いいはずだが、このページのコマンドをコピペすると
部分的にエラーが発生したのでネタ元のコマンドを使用した。
phpMyAdminもzipファイルを解凍して設置ではなく、以前作成したXAMPP(php8.1+Mysql5.6)のphpMyAdmin(バージョン5.1.3)をコピペで使用した。
手順はこちらの記事から
Mysql-5.7.25-win32.zipをダウンロードしておく
さらにphpMyAdmin-5.1.3-all-languages.zipもダウンロード
C:\XAMPP\phpMyAdminをphpMyAdmin_8.1にリネーム
C:\XAMPPにphpMyAdminのzipファイルを解凍して設置し、phpMyAdminにリネームする
C:\XAMPP\mysqlをmysql_mariaにリネーム
C:\XAMPPにMysqlのzipファイルを解凍して設置し、mysqlにリネームする
C:\xampp\mariadb\bin\my.ini を C:\xampp\mysql\bin\my.ini にコピーする
テキストエディタでmy.iniを開き、[mysqld]以下にあるkey_buffer=16Mをコメントアウト
コマンドプロンプトで以下を実行
cd C:\xampp\mysql
bin\mysqld –initialize-insecure
start /b bin\mysqld
bin\mysql -u root
以下mysqlコマンド
CREATE USER pma@localhost;
SOURCE C:/xampp/phpMyAdmin/sql/create_tables.sql;
GRANT SELECT, INSERT, DELETE, UPDATE, ALTER ON phpmyadmin.* TO pma@localhost;
ALTER USER root@localhost IDENTIFIED WITH mysql_native_password BY ”;
ALTER USER pma@localhost IDENTIFIED WITH mysql_native_password BY ”;
\q
mysqlコマンド終了
bin\mysqladmin -u root shutdown
exit
以上でコマンドプロンプト終了
XAMPPを起動させる
cd C:\xampp\mysql bin\mysqld --initialize-insecure start /b bin\mysqld bin\mysql -u root 以下mysqlコマンド CREATE USER pma@localhost; SOURCE C:/xampp/phpMyAdmin/sql/create_tables.sql; GRANT SELECT, INSERT, DELETE, UPDATE, ALTER ON phpmyadmin.* TO pma@localhost; ALTER USER root@localhost IDENTIFIED WITH mysql_native_password BY ''; ALTER USER pma@localhost IDENTIFIED WITH mysql_native_password BY ''; \q mysqlコマンド終了 bin\mysqladmin -u root shutdown
レンタルサーバーの仕様の変化に伴ってテスト環境(XAMPP)を合わせているが、レンタルサーバーがMysql5.7を採用する一方、XAMPPはMariaDBを採用しているためMariaDBをMysql5.7にする必要が発生した。
そこでXAMPPでPHP7.4とMysql5.7の組み合わせを作る
XAMPPのMariaDBをMysql5.7にする手順
※XAMPPのバージョンは7.4.4
※Mysqlのバージョンは5.7.25
Mysql-5.7.25-win32.zipをダウンロードしておく
C:\XAMPP\mysqlをmysql_mariaにリネーム
C:\XAMPPにMysqlのzipファイルを解凍して設置し、mysqlにリネームする
C:\xampp\mariadb\bin\my.ini を C:\xampp\mysql\bin\my.ini にコピーする
テキストエディタでmy.iniを開き、[mysqld]以下にあるkey_buffer=16Mをコメントアウト
コマンドプロンプトで以下を実行
cd C:\xampp\mysql
bin\mysqld –initialize-insecure
start /b bin\mysqld
bin\mysql -u root
以下mysqlコマンド
CREATE USER pma@localhost;
SOURCE C:/xampp/phpMyAdmin/sql/create_tables.sql;
GRANT SELECT, INSERT, DELETE, UPDATE, ALTER ON phpmyadmin.* TO pma@localhost;
ALTER USER root@localhost IDENTIFIED WITH mysql_native_password BY ”;
ALTER USER pma@localhost IDENTIFIED WITH mysql_native_password BY ”;
\q
mysqlコマンド終了
bin\mysqladmin -u root shutdown
exit
以上でコマンドプロンプト終了
XAMPPを起動させる
手順はこちらの記事から
phpMyadminのパスワード
phpMyAdmin\config.inc.php
/* Authentication type and info */
$cfg[‘Servers’][$i][‘auth_type’] = ‘config’;
$cfg[‘Servers’][$i][‘user’] = ‘root’;
$cfg[‘Servers’][$i][‘password’] = ”;
$cfg[‘Servers’][$i][‘extension’] = ‘mysqli’;
$cfg[‘Servers’][$i][‘AllowNoPassword’] = true;
$cfg[‘Lang’] = ”;
auth_type の値を config から cookie に変更
ログインするとエラーが出る
「設定ファイルの中に記述されているパスフレーズ(blowfish_secret)が短すぎます。」
phpMyAdmin\config.inc.php
$cfg[‘blowfish_secret’] = ‘xampp’;
xamppのところ32文字以上入れる
デフォルトではphpMyAdminのrootにパスワードが設定されていないのでログイン時
ユーザー名のrootだけで(パスワード未入力)ログインできる
なので、rootにパスワードを設定する
ログインしたら「ユーザーアカウント」→「rootの権限を編集」→「change password」で
パスワードを入力、再入力欄にも入力し、保存をクリックする。
従来の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>
管理者以外、例えば編集者にユーザー編集権限を与えた場合、その編集者が管理者を編集(権限変更や削除)ができてしまうので管理者以外はユーザー一覧に管理者を表示させないようにする方法。
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;
}
}