![](/img/trans.png)
[英]Wordpress - How to add password length to password-strength-meter.js
[英]WP “TypeError: blacklist is undefined” password-strength-meter.js
我正在為我的一個WP插件創建一個自定義配置文件頁面,我希望用戶在其中擁有常規頁面,而不是看到WP Dashboard。 到目前為止,除密碼強度腳本外,其他所有方法都工作正常。 當我開始輸入密碼時,會在Firebug控制台中輸入密碼:
TypeError: blacklist is undefined
blacklist = [ blacklist.toString() ];
在開始時調用“ meter”事件時將拋出該異常:
meter : function( password1, blacklist, password2 ) {
if ( ! $.isArray( blacklist ) )
blacklist = [ blacklist.toString() ];
我不知道它在WP儀表板中如何正常工作。 我花了大約一個小時的時間進行搜索,然后決定使用變通方法。 如果有人能指出我正確的方向,這就是我所缺少的,我將不勝感激。
我現在的解決方法是將其放入try / catch塊中:
meter : function( password1, blacklist, password2 ) {
try {
if ( ! $.isArray( blacklist ) )
blacklist = [ blacklist.toString() ];
}
catch (e){}
即使在WP前端上使用它,現在也可以正常工作。 但這不是最佳解決方案,因為我必須將JS文件password-strenght-meter.js復制到我自己的插件中,然后從那里入隊。 由於我還需要使用user-profile.js,因此我也必須復制它,因此我需要復制這兩個JS文件,這不是一個好的解決方案。
有什么想法,為什么jQuery在前端頁面上使用時為什么會停止腳本,而在后台卻能正常工作呢?
====編輯=========我剛剛發現問題與另一個插件“ WP User Frontend”有關,該插件似乎用自己的代碼覆蓋了密碼強度表腳本。 所以我想我現在可以解決這個問題。
抱歉誤導性問題。 我已經檢查過此問題與激活另一個插件“ WP User Frontent”有關,該插件確實干擾了WordPress中的現有管理腳本。 所以這是我解決的方法。
首先,我將其放入自定義頁面模板中,因此需要將其放置在主題目錄中:
<?php
/**
* Template Name: User Profile Dashboard
*/
// remove other conflicting scripts
if (class_exists('WPUF_Main'))
{
global $wpuf;
remove_action( 'wp_enqueue_scripts', array($wpuf, 'enqueue_scripts') );
}
get_header();
wp_enqueue_script('user-profile');
wp_enqueue_style('wp-admin');
include_once(ABSPATH . '/wp-admin/includes/template.php');
... other code that handles the user profile fields ...
<?php get_footer() ?>
棘手的部分是擺脫來自WPUF_Main類的已入隊腳本。 似乎當插件處於活動狀態時,WP User Frontend將該類實例化為全局變量$ wpuf,因此我不得不使用此變量來刪除使腳本排隊的動作。 然后,我排隊了用戶配置文件和wp-admin的腳本和樣式,並包括了wp-admin的template.php,因為我需要在此處聲明的函數commit_button()。
我希望這將對其他提出相同問題的人有所幫助,因為當網站管理員完全不希望其用戶看到WP儀表板時,結合使用WP用戶前端和具有自定義“個人資料”頁面是有道理的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.