WordPress 플러그인을 만들고 있는데 이상한 점이 있습니다.WordPress 플러그인에서 Ajax 반환 문제
우선 내 워드 프레스 스크립트를 보여 드리고 싶습니다.
<?php
/*
Plugin Name: Banner Plugin
*/
define('MYPLUGINNAME_PATH', plugin_dir_path(__FILE__));
register_activation_hook(__FILE__, 'my_banner_plugin_activate');
register_deactivation_hook(__FILE__, 'my_banner_plugin_deactivate');
function my_banner_plugin_activate(){
//Activation method.
activate();
}
function my_banner_plugin_deactivate(){
//Deactivation method.
global $wpdb;
$wpdb->query(" DROP TABLE ".$wpdb->prefix."banner ");
}
add_action('admin_menu', 'register_custom_menu_page');
function register_custom_menu_page() {
add_menu_page('Banner Menu Display', 'Banner Menu', 'read', 'banner-menu', 'display_banner_panel' /*, $icon_url, $position*/);
add_submenu_page('banner-menu', 'Add Baner', 'Add Baner','read', 'add-banner','display_banner_subpanel_add');
}
if(isset($_POST['action']) && $_POST['action']=='add_banner'){
submit_form();
}
if(isset($_POST['action']) && $_POST['action']=='updateRecordsListings')
{
include 'reorder.php';
}
function header_css_page() {
wp_register_style($handle = 'header-css', $src = plugins_url('css/banner_style.css', __FILE__), $deps = array(), $ver = '1.0.0', $media = 'all');
wp_enqueue_style('header-css');
}
add_action('init', 'header_css_page');
function reorder_css_page() {
wp_register_style($handle = 'reorder-css', $src = plugins_url('css/reorder_style.css', __FILE__), $deps = array(), $ver = '1.0.0', $media = 'all');
wp_enqueue_style('reorder-css');
}
add_action('init', 'reorder_css_page');
function display_banner_panel()
{
global $wpdb;
$banner_list = $wpdb->get_results("select * from ".$wpdb->prefix."banner order by banner_order desc");
?>
<div class='admin-custom'>
<?php include 'view_banner.php'; ?>
</div>
<?php
}
view_banner.php
에 대한 스크립트는 다음과 같습니다.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="<?php echo plugins_url();?>/banner-pluggin/js/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="<?php echo plugins_url();?>/banner-pluggin/js/jquery-ui-1.7.1.custom.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$(function() {
$("#contentLeft2 ul").sortable({ opacity: 0.6, cursor: 'move', update: function() {
var order = $(this).sortable("serialize") + '&action=updateRecordsListings';
$.post("", order, function(theResponse){
$("#contentRight2").html(theResponse);
});
}
});
});
});
</script>
</head>
<body>
<h1>Add Banner</h1>
<br/>
<br/>
<div id="contentWrap2">
<div id="contentLeft2">
<ul>
<?php
//$query = "SELECT * FROM records ORDER BY recordListingID ASC";
//$result = mysql_query($query);
//while($row = mysql_fetch_array($result, MYSQL_ASSOC))
//{
foreach($banner_list as $row)
{
?>
<li id="recordsArray_<?php echo $row->banner_id; ?>">
<div>
<img src="<?php echo plugins_url().'/banner-pluggin/banner/'. $row->banner_img;?>" height="80px" width="100px"/>
</div>
</li>
<?php } ?>
</ul>
</div>
<div id="contentRight2">
<p>Array will be displayed here.</p>
<p> </p>
</div>
</div>
</body>
</html>
그리고 reorder.php
은 다음과 같다.
:
<?php
global $wpdb;
$action = mysql_real_escape_string($_POST['action']);
$updateRecordsArray = $_POST['recordsArray'];
if ($action == "updateRecordsListings")
{
$listingCounter = 1;
foreach ($updateRecordsArray as $recordIDValue)
{
$query = "UPDATE wp_banner SET banner_order = " . $listingCounter . " WHERE banner_id = " . $recordIDValue;
if(mysql_query($query))
{
}
else {
mysql_error();
}//die('Error, insert query failed');
$listingCounter = $listingCounter + 1;
}
echo '<pre>';
print_r($updateRecordsArray);
echo '</pre>';
echo 'If you refresh the page, you will see that records will stay just as you modified.';
}
?>
문제는 아약스 호출도 잘 작동한다는 것입니다, 유일한 문제는 여기
이 스크린 샷입니다, 아약스 응답이 또한 관리자 메뉴의 일부를 표시한다는 것입니다 오른쪽의 녹색 상자에서 관리자의 부분이 표시되지 않아야하지만 왜 표시됩니까?내가 알고 내가 문제를 파악,
$.post("", order, function(theResponse)
는
banner-pluggin.php
을 의미하며, 작업 후
banner-pluggin.php
의 HTML이 아약스의로로드지고 같은 페이지에 보낼 Ajax 호출을 일으킴.
그러나 직접 Ajax 게시물을 reorder.php
으로 보내면 HTML이 없으므로 HTML이 응답으로로드되지 않습니다.
그러나 또 다른 문제가
: SQL 쿼리가 실행되지 않습니다가, 어느 쪽도 아니 그것은 어떤 오류가 표시되지 않으며, SQL, 나는 처음부터 시작하는 것이 좋습니다 코드로