2013-10-21 2 views
1

이것은 Ajax 및 PHP를 사용하여 MySQL에서 행을 삭제하는 첫 번째 시도입니다. 오류가 표시됩니다 :WordPress의 Ajax 및 PHP 삭제 오류

행이 삭제되지 않아야하지만 모두 정상적으로 작동합니다.

HTML 양식의 삭제 부분 :

echo "<div class='ffui-media-item'>"; 
    echo "<div class='ffui-delete' align='center'><a href='#' id='" . $media_item['ID'] . "' class='delbutton' title='Click To Delete'>X</a></div>"; 

JQuery와/아약스 부분 :

<script type="text/javascript"> 
    $(function() { 
    $(".delbutton").click(function(){ 
    //Save the link in a variable called element 
    var element = $(this); 

    //Find the id of the link that was clicked 
    var del_id = element.attr('id'); 

    //Built a url to send 
    var info = {"id" : del_id }; 
     if(confirm("Are you sure you want to delete this Record?")) { 
     $.ajax({ 
      type: "POST", 
      url: "<?php echo plugins_url('id-ffui/lib/delete.php') ?>", 
      data: info, 
      success: function(){ 
      } 
     }); 
     $(this).parents(".ffui-media-item").animate({ backgroundColor: "#fbc7c7" }, "fast") 
      .animate({ opacity: "hide" }, "slow"); 
     } 
    return false; 
    }); 
}); 
</script> 

그리고 delete.php 파일 :

global $wpdb; 
global $ffui_db_version; 

$ffui_items = $wpdb->prefix . "ffui_items"; 

if($_POST['id']) { 
    $id = $_POST['id']; 
    $wpdb->delete($ffui_items, array('ID' => `$id`)); 
} 

어떤 도움이 될 것이다 대단히 감사합니다. 미리 감사드립니다.

답변

2

표시하는 코드가 delete.php 전체이면 $ wpdb가 인스턴스화되지 않았습니다. 핵심 WP 파일을 먼저로드해야합니다.

require_once(dirname(dirname(dirname(dirname(__FILE__)))) . '/wp-load.php'); 

나머지 코드는 다음에옵니다. 이 경우 함수 또는 객체 내부에서 작업하지 않으므로 "전역"명령이 필요하지 않습니다.

여기에 wp-load.php가 great explanation입니다.

+0

완벽한! 나는 이것을 발견하고 그것을 사용했다. $ absolute_path = 폭발 ('wp-content', $ _SERVER [ 'SCRIPT_FILENAME']); $ wp_load = $ absolute_path [0]. 'wp-load.php'; require_once ($ wp_load); –

+0

링크 된 "훌륭한 설명"페이지에 표시된 것처럼 다른 플러그인 개발자가 한 것과 일치하는 대답을 편집했습니다. – lwitzel

2

잘못된 역 따옴표 :

$wpdb->delete($ffui_items, array('ID' => `$id`)); 
              ^---^-- 

PHP는 코드에서 역 따옴표를 사용하지 않습니다. 그냥 'ID' => $id

실제 오류 메시지는 WordPress 라이브러리가 포함되어 있지 않은 것 같습니다. 따라서 $wpdb은 실제로 존재하지 않습니다.

+0

감사합니다. 내 PHP 파일에 WordPress의 라이브러리를 포함 할 수있는 방법이 있습니까? –