在 wordpress 插件的自定义 table 中插入数据

Insert the data in custom table in wordpress plugin

我正在尝试插入数据,但在从脚本 ajax 调用 seding 时遇到致命错误。请帮助我 one.Thanks 在 advance.Am 中使用它进行 Wordpress 插件开发

include_once($_SERVER['DOCUMENT_ROOT'].'/wordpress/wp-config.php' );
global $wpdb;
$table ='wp_mnggallery';

if(isset($_POST['img'])){

$img = $_POST['img'];
$back_image = $_POST['back_img'];
$url = $_POST['url'];

$data = array(
        'id' => "",
        'images' => "$img",
        'back_image' => "$back_image",
        'url'=>"$url"       
);

$number_images = count($img);
    //Inserting the data
      $q =  $wpdb->insert($table ,$data);

       echo $img.' is updated succefully <br>'; 
}

Ajax 调用此代码从另一个页面发送它是:

<script>
$('#submit').submit(function(event){ 
event.preventDefault();
var img = $('#img').val();
var backimage = $('#back_img').val();
if(img!=''&backimage!=''){
 $.ajax({
      type: "POST",
      url: '<?php echo plugins_url(); ?>/mngimageeffects/post.php',
      data: $('#submit').serialize(),
      success: function( response ) {
    $('#error').html( response );
$('#mng_img').append('<div class="col-md-4"><img src="'+img+'"width="100%"/></div><div class="col-md-2"><a href="<?php $_SERVER['PHP_SELF']; ?>"><button class="btn btn-primary delete" id="delete">Upload</button></a></div>');
//delete = delete + 1;
   $('#img').val('');
    $('#back_img').val('');
    $('#url').val('');
               }
    });
}else{
    alert('Please Enter The Frent Image and Back Images Urls: ');
}

});
</script>

当您想在 WordPress 之外使用 WordPress 功能时,您不应该包含配置文件,而应该包含 wp-load.php

define( 'SHORTINIT', true );

require( '/path/to/wp-load.php' );

// use $wpdb after this

在 Wordpress 插件中使用 AJAX

jQuery('#submit').submit(function(event){
  event.preventDefault(); 
  var img = jQuery('#img').val(); 
  var backimage = jQuery('#back_img').val(); 
  var url = jQuery('#url').val();

  var data = {
        action: 'submit_data',
        img: img,
        back_img: backimage,
        url : url,
    };
  if(img!=''&backimage!=''){ 
     jQuery.ajax({ 
        type: "POST", 
        url: ajaxurl,  // if its front end else use else ajaxurl
        data:data,            
        dataType: 'html',
        success: function( response ) {
            alert(response+'sdfs')
           jQuery('#error').html( response );
           jQuery('#mng_img').append('<div class="col-md-4"><img src="'+img+'"width="100%"/></div><div class="col-md-2"><a href="<?php $_SERVER['PHP_SELF']; ?>"><button class="btn btn-primary delete" id="delete">Upload</button></a></div>'); //delete = delete + 1;
           jQuery('#img').val(''); jQuery('#back_img').val(''); jQuery('#url').val('');
        },
         error  :  function(data){
            alert('Error while deleting.');
            return false;
         }
     });
  }
  else{ alert('Please Enter The Frent Image and Back Images Urls: '); } 

});

在PHP一侧,

add_action( 'wp_ajax_my_action', 'submit_data' ); // excutes for users that are logged in. 
add_action( 'wp_ajax_nopriv_submit_data', 'submit_data' );     //executes for users that are not logged in. 

function submit_data(){
   global $wpdb;
   $table ='wp_mnggallery';

   if(isset($_POST['img'])){

      $img = $_POST['img'];
      $back_image = $_POST['back_img'];
      $url = $_POST['url'];

      $data = array(
              'id' => "",
              'images' => "$img",
              'back_image' => "$back_image",
              'url'=>"$url"       
      );

      $number_images = count($img);
      //Inserting the data
      $q =  $wpdb->insert($table ,$data);
      echo $img.' is updated succefully <br>'; 
      wp_die();
   }
}

url应该是url:admin_url( 'admin-ajax.php' ),如果它的前端使用ajaxurl它会自动包含必要的文件

check