我遇到了一个问题,我的脚本被加载,但它只有在我登录时才能执行。用户的角色无关紧要。
上周它运行得很好,据我所知,从那以后网站没有任何变化。
为了测试这一点,我尝试执行以下代码:
console.log('??????????')
文件中没有其他代码。
以下是我的结果:
未登录:
我可以在Chrome控制台的"网络"选项卡中找到它
但是没有"????"在控制台
以普通用户身份登录
我仍然可以在"网络"选项卡中找到它
有"????"在控制台
脚本的排队方式:
function custom_scripts() {
$rand = rand(1, 99999999);
wp_enqueue_script(
'custom', /* Name für das Script */
get_stylesheet_directory_uri() . '/custom.js', /* Pfad */
array( 'jquery' ), /* jQuery ist erforderlich */
false,
true
);
wp_enqueue_script( 'js4u', get_stylesheet_directory_uri() . '/js4u/js4u.min.js', array( 'jquery'), $rand, "all");
if( is_page(8) ) {
wp_enqueue_script( 'create-listing', get_stylesheet_directory_uri().'/js4u/create-listing.js',array(), $rand, "all");
}
if( is_page(13) ) {
wp_enqueue_script( 'login-page', get_stylesheet_directory_uri().'/js4u/login-page.js',array(), $rand, "all");
}
if( is_page(14) ) {
wp_enqueue_script( 'register-page', get_stylesheet_directory_uri().'/js4u/register-page.js',array(), $rand, "all");
}
wp_enqueue_script( 'primary-menu', get_stylesheet_directory_uri().'/js4u/primary-menu.js',array(), $rand, "all");
}
add_action( 'wp_enqueue_scripts', 'custom_scripts', 999 );
如果我将代码直接粘贴到控制台中,它将按预期工作。
我在Chrome、Firefox和Edge上都试过,结果都一样。
隐身模式和正常模式之间也没有区别。
这是唯一出现此问题的文件,其他文件仍然可以正常工作。
我希望你能帮助我:D
更新:警报和console.log似乎适用于除首页以外的所有页面。代码的其余部分仍然没有任何作用。
应执行的代码:
function fn() {
let loginButton = document.querySelectorAll('#login-button-link')[1].parentNode;
let usernameMenuItem = document.getElementById('menu-item-username');
let firmaEintragen = document.getElementsByClassName('menu-item-8199')[1];
let favorites = document.querySelectorAll('#menu-item-my-favorites')[1];
/**
* Entfernt den Eintrag 'Favorites' aus dem Username Dropdown im Header
*/
if (usernameMenuItem){
favorites.parentNode.removeChild(favorites);
console.log('Username Dropdown angepasst');
}
/**
* Entfernt den "Firma Eintragen" Button wenn der Login-Button sichtbar ist, der User also nicht eingeloggt ist.
*/
let loginStyle = loginButton.style.display;
if (!(loginStyle === 'none')) {
firmaEintragen.style.display = 'none';
console.log('Firma Eintragen entfernt');
}
if (loginStyle === 'none') {
loginStyle = 'table-cell';
console.log('Login geändert')
}
}
fn();
纠正这两个错误,然后看看它是否有效:
- wp_enque_script((的最后一个参数需要是Bool。您正在传递一个字符串("all"(,该字符串可能默认为false(至少会引起PHP警告(
- 倒数第二个参数必须是字符串,布尔或null。您正在传递一个Integer,因为这是rand((返回的结果(它还应该引起PHP警告(。将int转换为字符串(例如通过strval(((
$ver参数与缓存非常相关!请确保正确阅读文档:https://developer.wordpress.org/reference/functions/wp_enqueue_script/
此外,我建议您激活WP_DEBUG
和SCRIPT_DEBUG
:https://wordpress.org/support/article/debugging-in-wordpress/#wp_debug
最后一条建议:正确删除浏览器缓存(这可以在浏览器设置中完成(。
现在一切都按预期进行。
非常感谢@jasie
将$rand
转换为具有$rand = strval(rand(1, 99999999));
的字符串。
将$in_footer
更改为true
。
启用了缓存插件WP Rocket,并多次清除缓存。
函数中的代码.pp:
function custom_scripts() {
$rand = strval(rand(1, 99999999));
wp_enqueue_script(
'custom', /* Name für das Script */
get_stylesheet_directory_uri() . '/custom.js', /* Pfad */
array( 'jquery' ), /* jQuery ist erforderlich */
false,
true
);
wp_enqueue_script( 'js4u', get_stylesheet_directory_uri() . '/js4u/js4u.min.js', array( 'jquery'), $rand, true);
if( is_page(8) ) {
wp_enqueue_script( 'create-listing', get_stylesheet_directory_uri().'/js4u/create-listing.js',array(), $rand, true);
}
if( is_page(13) ) {
wp_enqueue_script( 'login-page', get_stylesheet_directory_uri().'/js4u/login-page.js',array(), $rand, true);
}
if( is_page(14) ) {
wp_enqueue_script( 'register-page', get_stylesheet_directory_uri().'/js4u/register-page.js',array(), $rand, true);
}
wp_enqueue_script( 'primary-menu', get_stylesheet_directory_uri().'/js4u/primary-menu.js', array('jquery'), $rand, true);
}
add_action( 'wp_enqueue_scripts', 'custom_scripts', 999 );