以前に、下にスクロールするとヘッダーメニューを半透明にするスクリプトを入れました。
しかし、自分がログインしているときは不要なのでオフにすることにしました(画面録画するときに撮影範囲がわかりにくい)。
環境:WordPress, Cocoon, Cocoon子テーマ
いったん javascript.jsの以下のコードを削除して、管理者ログインしていないときに限定します。
/**
* 2024-07-04 管理者ログインしていないときのスクリプトを分けた
* 下にスクロールするとヘッダーメニューを半透明にする
* メニューをクリックしたときの反応
* スクロール量が20px以上の場合にのみ透過度を変更
*/
(function() {
let lastScrollPosition = 0;
const headerMenu = document.querySelector('.mobile-header-menu-buttons');
const scrollThreshold = 20; // スクロールしきい値(px)を設定
window.addEventListener('scroll', function() {
const scrollPosition = window.pageYOffset;
if (Math.abs(scrollPosition - lastScrollPosition) >= scrollThreshold) {
if (scrollPosition > lastScrollPosition) {
// 下にスクロールした場合
headerMenu.style.opacity = '0';
} else {
// 上にスクロールした場合
headerMenu.style.opacity = '1';
}
lastScrollPosition = scrollPosition;
}
});
function handleEvent(event) {
headerMenu.style.opacity = '1';
}
headerMenu.addEventListener('touchstart', handleEvent);
headerMenu.addEventListener('click', handleEvent);
})();
functions.phpで、ログインしていないときにだけ、コードを読み込むことにしています。
/** 2024-07-04 管理者ログインしていないとき用のスクリプトを分けた */
function enqueue_non_admin_script() {
if (!is_user_logged_in()) {
wp_enqueue_script('non-admin-script', get_stylesheet_directory_uri() . '/non-admin-script.js', array(), filemtime(get_stylesheet_directory() . '/non-admin-script.js'), true);
}
}
add_action('wp_enqueue_scripts', 'enqueue_non_admin_script');
子テーマの直下に「non-admin-script.js」を追加しました。
1. 念のためのセキュリティ
ただし、ファイルの存在確認、パスのサニタイズ、エラー処理が追加しました。
/** 2024-07-04 管理者ログインしていないとき用のスクリプトを分けた */
function enqueue_non_admin_script() {
if (!is_user_logged_in()) {
$script_path = get_stylesheet_directory() . '/non-admin-script.js';
$script_url = get_stylesheet_directory_uri() . '/non-admin-script.js';
// ファイルの存在確認
if (file_exists($script_path)) {
// パスのサニタイズ
$script_url = esc_url($script_url);
wp_enqueue_script(
'non-admin-script',
$script_url,
array(),
filemtime($script_path),
true
);
}
}
}
add_action('wp_enqueue_scripts', 'enqueue_non_admin_script');
file_exists()
関数を使用して、スクリプトファイルの存在を確認します。esc_url()
関数を使用して、URLをサニタイズします。これにより、URLに悪意のあるコードが含まれていないことを確認します。filemtime()
関数の引数にも、確認済みのファイルパスを使用します。
こちらもどうぞ。
![[JavaScript]下にスクロールするとヘッダーメニューを半透明にするようにした](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMjAiIGhlaWdodD0iMTk4IiB2aWV3Qm94PSIwIDAgMzIwIDE5OCI+PHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iI2ZmZmZmZiIvPjwvc3ZnPg==)
![[JavaScript]全選択で記事部分だけになるようにした](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMjAiIGhlaWdodD0iMTk4IiB2aWV3Qm94PSIwIDAgMzIwIDE5OCI+PHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iI2ZmZmZmZiIvPjwvc3ZnPg==)
![[PHP] 不要なCSS/JavaScriptを無効化する(wp_dequeue_style, wp_dequeue_script)](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMjAiIGhlaWdodD0iMTk4IiB2aWV3Qm94PSIwIDAgMzIwIDE5OCI+PHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iI2ZmZmZmZiIvPjwvc3ZnPg==)
![[JavaScript]下にスクロールするとヘッダーメニューを半透明にするようにした](https://chiilabo.com/wp-content/uploads/2024/05/image-9-37-320x198.jpg)
[JavaScript]下にスクロールするとヘッダーメニューを半透明にするようにした
Xのタイムラインを見ていたら、画面のメニューバーの透過度が上下のスクロールに応じて変化していることに気づきました。少し下にスクロールすると半透明になり、少し上にスクロールすると元に戻っています。自分のサイトのヘッダーメニュー(mobile-header-menu-buttons)でも、このような処理をするように、JavaScriptを作りたいと思います。画面内の情報の表示範囲が増えるからです。javascript.jsとstyle.css機能ユーザーがページを下にスクロールす...
![[JavaScript]全選択で記事部分だけになるようにした](https://chiilabo.com/wp-content/uploads/2024/05/image-13-57-320x198.jpg)
[JavaScript]全選択で記事部分だけになるようにした
自分のサイト内の記事全体を選択しやすいように、スクリプトを作りました。window.getSelection()テーマのjavascript.jsに以下のコードを追加しました。document.addEventListener('keydown', function(event) { if ((event.ctrlKey || event.metaKey) && event.key === 'a') { event.preventDefault(); const articl...
![[PHP] 不要なCSS/JavaScriptを無効化する(wp_dequeue_style, wp_dequeue_script)](https://chiilabo.com/wp-content/uploads/2023/07/image-19-20-320x198.jpg)
[PHP] 不要なCSS/JavaScriptを無効化する(wp_dequeue_style, wp_dequeue_script)
トップページで読み込まれているスタイル・スクリプトの中から、不要なものを削減しました。項目変更前CSS/JS減パフォーマンス7071使用していないJavaScriptの削減0.40s0.60s使用していないVSSの削減0.35s0.45sスクリプトサイズ0.77MB0.69MB不要なスタイル・スクリプトを見つける前回は、不要なプラグインを無効化しました。今回は不要なスタイル・スクリプトを削除していきます。前回はこちら。スタイル・スクリプトを一覧するショートコードは、過去に作っ...
QRコードを読み込むと、関連記事を確認できます。
![[WordPress]管理者ログインしていないときだけ実行するJavaScriptを追加した(分離)](https://api.qrserver.com/v1/create-qr-code/?data=?size=200x200&data=https%3A%2F%2Fchiilabo.com%2F2024-07%2Fwordpress-non-admin-script%2F)