脚本已加载,但仅在用户登录时执行



我遇到了一个问题,我的脚本被加载,但它只有在我登录时才能执行。用户的角色无关紧要。

上周它运行得很好,据我所知,从那以后网站没有任何变化。

为了测试这一点,我尝试执行以下代码:

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();

纠正这两个错误,然后看看它是否有效:

  1. wp_enque_script((的最后一个参数需要是Bool。您正在传递一个字符串("all"(,该字符串可能默认为false(至少会引起PHP警告(
  2. 倒数第二个参数必须是字符串,布尔或null。您正在传递一个Integer,因为这是rand((返回的结果(它还应该引起PHP警告(。将int转换为字符串(例如通过strval(((

$ver参数与缓存非常相关!请确保正确阅读文档:https://developer.wordpress.org/reference/functions/wp_enqueue_script/

此外,我建议您激活WP_DEBUGSCRIPT_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 );

最新更新