2014-09-12 1 views
0

내 WP 플러그인 중 하나에 대한 사용자 정의 프로필 페이지를 만들고 있는데, 사용자가 WP 대시 보드를 보는 대신 일반 페이지를 갖기를 원합니다. 암호 강도를위한 스크립트를 제외하고 지금까지 모두 잘 작동합니다. 내가 암호를 입력을 시작했을 때, 나는 내 방화범 콘솔이 얻을 :은 "m"이벤트가 시작 부분에 호출 될 때 발생합니다WP "TypeError : blacklist is undefined"password-strength-meter.js

TypeError: blacklist is undefined 
    blacklist = [ blacklist.toString() ]; 

:

meter : function(password1, blacklist, password2) { 
    if (! $.isArray(blacklist)) 
    blacklist = [ blacklist.toString() ]; 

가 나는 그것이 무엇 아무 생각이 없다 WP 대시 보드에서 잘 작동합니다. 약 1 시간 동안 검색을하고 나면 해결 방법을 사용하기로 결정했습니다. 만약 누군가 내가 올바른 방향으로 나를 가리킬 수 있다면, 내가 여기에서 누락 된 것을 나는 고맙게 생각한다.

지금 내 해결 방법은 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가 스크립트를 중지하는 이유는 무엇입니까? 관리자 백엔드에서 제대로 작동합니까?

==== EDIT ======== 방금 ​​문제가 다른 플러그인 "WP User Frontend"와 관련이있는 것으로 밝혀졌습니다.이 플러그인은 자신의 코드로 암호 강도 미터 스크립트를 무시하는 것으로 보입니다. 그래서 나는 지금이 문제를 해결할 수있을 것이라고 생각합니다.

+0

블랙리스트에 넣지 않으시겠습니까? – epascarello

답변

0

오해의 소지가있는 질문에 사과드립니다. 나는이 문제가 WordPress의 기존 관리 스크립트를 방해하는 다른 플러그인 "WP User Frontent"활성화와 관련이 있음을 확인했습니다. 그래서 여기 어떻게 그것을 해결할 수 있습니다. 모든

첫째, 나는 사용자 정의 페이지 템플릿에이를 넣어, 그래서 이것은 테마 디렉토리에 위치해야합니다 :

<?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로 인스턴스화하는 것처럼 보입니다. 따라서이 변수를 사용하여 스크립트를 대기열에 넣기위한 작업을 제거해야했습니다. 그런 다음 여기에 선언 된 submit_button() 함수가 필요했기 때문에 사용자 프로필과 wp-admin의 스크립트와 스타일을 대기열에 추가하고 wp-admin의 template.php를 포함 시켰습니다.

WP 사용자 프런트 엔드와 사용자 정의 프로필 페이지가 결합되어 있기 때문에 웹 마스터가 사용자에게 해당 웹 사이트를 보도록하고 싶지 않을 때 같은 문제가 떠오르면 도움이되기를 바랍니다. WP 대시 보드.

관련 문제