2011-09-22 3 views
3

jQuery의 양식 플러그인을 Wordpress 플러그인과 함께 사용하려고합니다. 이 example을 팔로우하고 있습니다. 스크립트를 대기열에 추가하고 양식을 작성했습니다. csf_form_handler.php에서 예제의 json-echo.php에 해당하는 항목에서 폼에서 선택한 항목에 액세스 할 수 있습니다 (라디오 버튼 그룹 있음).치명적인 오류 : 비 객체 (jQuery에서 플러그인 및 워드 프레스)에 대한 get_results() 멤버 함수 호출

내 목표는 SELECT 문에서 양식에서 선택한 값을 사용하여 사용자 지정 WordPress 데이터베이스 테이블에서 데이터를 반환하는 것입니다.

$csf_selected_sport = $_POST['csf_radiobutton_group_sport']; 

global $wpdb; 

$csf_db_table = $wpdb->prefix . "activity"; 


$csf_data = $wpdb->get_results($wpdb->prepare(" 
      SELECT * 
      FROM " .$csf_db_table. " 
      WHERE " . $csf_selected_sport ." ")); 

불행하게도, 내가 갖는 :

Notice: Trying to get property of non-object (on the $wpdb->prefix line)

Fatal error: Call to a member function get_results() on a non-object (on the $csf_data line)

코드를 위 csf_form_handler.php에하는 함수가 아닙니다. 그게 효과가 있는지 나는 모른다.

어떻게 $ wpdb를 사용할 수 있도록 코드를 변경할 수 있습니까?

감사합니다.

답변

5

플러그인을 작성할 때 데이터 처리를 플러그인의 기본 파일 내에서 유지 (즉, 별도의 파일로 전송하지 않음)하고 적절하게 처리하는 기능을 활성화하는 것이 좋습니다. 기본적으로 폼의 액션을 설정하여 플러그인의 파일이나 폼을 포함하는 페이지를 가리킬 수 있습니다.

사이트의 프런트 엔드 사이드 바에 작업중인이 양식이 표시된다고 가정 해 보겠습니다. 사용자가 "제출"을 클릭 그 폼으로부터 데이터를 처리하기 위해, 당신은 우리의 플러그인의 파일에 함수를 만들 수 있습니다 : 이제

function $csf_get_data(){ 

global $wpdb; //since your this function is in your plugin’s file, $wpdb should be available, so no errors here! =) 

$csf_selected_sport = $_POST['csf_radiobutton_group_sport']; 

$csf_db_table = $wpdb->prefix . "activity"; 

$csf_data = $wpdb->get_results($wpdb->prepare(" 
      SELECT * 
      FROM " .$csf_db_table. " 
      WHERE " . $csf_selected_sport ." ")); 

    //do your stuff with $csf_data 
} 

//now run it everytime the plugin is run 
if(isset($_POST[‘submit’])){ 
    $csf_get_data(); 
} 

을, 당신은에 데이터를 전송하는 양식 액션의 속성을 설정할 수 있습니다 동일한 페이지, 위의 함수를 사용하여 처리 할 수 ​​있습니다.

action=”” 

또는

action="<?php the_permalink()?>" 

주의 : 데이터가 귀하의 사이트에서오고 있는지 (특히 공공 형태)를 만들어 wp_nonce_field 사용하는 기억()는 임시 필드를 만드는 방법 중 하나를 사용할 수 있습니다 도움이 http://codex.wordpress.org/Function_Reference/wp_nonce_field

희망,

VQ : 그는 wp_nonce()를 통해 워드 프레스 BYT 유효성을 검사 할 수 있습니다.

+0

안녕하세요 @ Vidal Quevedo, 도움 주셔서 대단히 감사합니다. 나는 새로운 것을 배웠다. – Laxmidi

2

이 코드를 어디에서 실행하고 있습니까? $ wpdb 인스턴스가 생성되기 전에 (또는 범위를 벗어남) 실행하고있는 것처럼 들립니다.

csf_form_handler.php 파일을 어떻게로드하고 있습니까? Wordpress에서 스크립트의 일부로 포함 시키시겠습니까? 아니면 자신 만의 플러그인입니까? 후자의 경우 먼저 WP를 활성화해야하므로 WP가로드 시퀀스에 포함될 수 있음을 기억하십시오 (이미 활성화되었다고 가정하고 있지만 JIC).

$ wpdb 객체가 이미 생성되었는지 확인하려면 <?php print_r($wpdb);?>을 실행하여 개체의 내용을 인쇄 할 수 있습니다.

더 자세히 알려주세요. 잘하면 당신을 도울 수 있습니다.

+0

안녕하세요 @ Vidal Quevedo, 메시지를 보내 주셔서 감사합니다. 나는 내 자신의 플러그인을 만들려고 노력하고있다. 나는 폼의 액션을 csf_form_handler.php로 설정했다. 내 플러그인이 활성화되었습니다. print_r ($ wpdb);을 실행했을 때 "Notice : Undefined variable : wpdb"를 받았습니다. 나는 핸들러가 폼의 action = "my handler"를 통해로드되기 때문에 WP 함수에 액세스 할 수 없다고 생각한다. 의견이 있으시면 그 이야기를 듣고 싶습니다. 고맙습니다. – Laxmidi

9

저도 같은 문제를 통해 들어 왔지만 나는이 같은 워드 프레스 폴더의 루트에서 wp-config.php 파일을 포함하여 해결 가지고 :

require_once('../../../wp-config.php'); 
global $wpdb; 

도움이 되었기를 바랍니다.

+4

require_once ('../../../ wp-config.php'); 정확하게 말하면. – mailo

+0

잘 처리되었습니다. 감사! –

관련 문제