سلام دوستان عزیز...
من در صفحهی نوشتهها ستون جدیدی ساختم و میخوام فرم آژاکس برای هر پست قرار بدم. همهی کارها رو انجام دادم اما فرم عمل نمیکنه!!
ممکنه منو راهنمایی کنید؟
مراحی که من انجام دادم:
اول از همه ستون جدیدی تعریف کردم و فرم رو داخلش قرار دادم
add_filter( 'manage_edit-post_columns', 'status_column_register' );
add_action( 'manage_posts_custom_column', 'status_column_display', 10, 2 );
function status_column_display( $column_name, $post_id ) {
if ( 'status' != $column_name )
return;
echo '
<form method="post" style="font-family: Tahoma" action="#">
<input id="post_id" type="hidden" name="post_id" size="20" value="'.$post_id.'" />
<div style="direction: rtl; text-align: right; line-height: 175%">
<input name="OK'.$post_id.'" id="OK'.$post_id.'" type="checkbox" />
<label for="OK'.$post_id.'"><span style="color: #008000"><strong>تایید شد</strong></span><br />
<input name="NOT'.$post_id.'" id="NOT'.$post_id.'" type="checkbox" />
<label for="NOT'.$post_id.'"><span lang="fa" style="color: #FF0000"><strong>تایید نشد</strong></span><br />
</div>
<div style="margin: 5px 0px 0px 0px; text-align: center">
<textarea name="text'.$post_id.'" style="text-align: justify; vertical-align: top; line-height: 125%; font-family: Tahoma; width: 240px; height: 150px" dir="rtl"></textarea>
</div><br />
<label for="allow_notify'.$post_id.'">آگاهسازی نویسنده: </label>
<input name="allow_notify'.$post_id.'" id="allow_notify'.$post_id.'" type="checkbox" /><br />
<input type="button" name="Send" value="Send" onclick="formget(this.form, \'../wp-content/plugins/Status-Post/ajax-post-form.php\');" />
</form>';
}
بعد جاوااسکریپت رو در هدر قرار دادم:
add_action( 'admin_head', 'status_css' );
function status_css() {
echo '
<script type="text/javascript">
//<![CDATA[
var div = "showresult";
var loadingmessage = \'<img src="loading.gif" alt="loading" height="16" width="16" /> لطفا کمی صبر کنید...\';
function Ajaxrequest(){
var xmlHttp;
try{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
return xmlHttp;
}
catch (e){
try{
// Internet Explorer
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
return xmlHttp;
}
catch (e){
try{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
return xmlHttp;
}
catch (e){
alert("مرورگر شما از آژاکس پشتیبانی نمی کند!");
return false;
}
}
}
}
function formget(form, url) {
var poststr = getFormValues(form);
postData(url, poststr);
}
function postData(url, parameters){
var xmlHttp = Ajaxrequest();
xmlHttp.onreadystatechange = function(){
if(xmlHttp.readyState > 0 && xmlHttp.readyState < 4){
document.getElementById(div).innerHTML=loadingmessage;
}
if (xmlHttp.readyState == 4) {
document.getElementById(div).innerHTML=xmlHttp.responseText;
}
}
xmlHttp.open("POST", url, true);
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.setRequestHeader("Content-length", parameters.length);
xmlHttp.setRequestHeader("Connection", "close");
xmlHttp.send(parameters);
}
function getFormValues(formobj)
{
var str = "";
var valueArr = null;
var val = "";
var cmd = "";
for(var i = 0;i < formobj.elements.length;i++)
{
switch(formobj.elements[i].type)
{
case "text":
str += formobj.elements[i].name +
"=" + escape(formobj.elements[i].value) + "&";
break;
case "textarea":
str += formobj.elements[i].name +
"=" + escape(formobj.elements[i].value) + "&";
break;
case "select-one":
str += formobj.elements[i].name +
"=" + formobj.elements[i].options[formobj.elements[i].selectedIndex].value + "&";
break;
case "checkbox":
if(formobj.elements[i].checked == true){
str += formobj.elements[i].name +
"=" + formobj.elements[i].value + "&";
}
break;
}
}
str = str.substr(0,(str.length - 1));
return str;
}
//]]>
</script>';
}
فایل ajax-post-form.php رو هم ساختم و داخل فولدر افزونه قرار دادم.
البته به جای ' در کدها برای اجرا شدن از '\ استفاده کردم.
نمیدونم چرا عمل نمیکنه! شاید در وردپرس نکتههای کوچیکی وجود داره که من ازشون بیخبرم.
استادان اگر ممکنه منو راهنمایی کنند...
ممنونم. :)