انجمن


قرار دادن فرم آژاکس در صفحه‌ی نوشته‌ها  (۱ نوشته)

  • Arash-GH

    آفلاین
    عضو
    تعداد نوشته‌ها: ۳۲
    تشکر شده: ۲۰ بار
    # نوشته شده: ۱۲ سال پیش
    ۲۲ تیر ۱۳۹۱ - ۲۰:۱۲

    سلام دوستان عزیز...
    من در صفحه‌ی نوشته‌ها ستون جدیدی ساختم و می‌خوام فرم آژاکس برای هر پست قرار بدم. همه‌ی کارها رو انجام دادم اما فرم عمل نمی‌کنه!!
    ممکنه منو راهنمایی کنید؟

    مراحی که من انجام دادم:
    اول از همه ستون جدیدی تعریف کردم و فرم رو داخلش قرار دادم

    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 رو هم ساختم و داخل فولدر افزونه قرار دادم.
    البته به جای ' در کدها برای اجرا شدن از '\ استفاده کردم.
    نمی‌دونم چرا عمل نمی‌کنه! شاید در وردپرس نکته‌های کوچیکی وجود داره که من ازشون بی‌خبرم.
    استادان اگر ممکنه منو راهنمایی کنند...
    ممنونم. :)

درباره‌ی این موضوع



برچسب‌ها

هیچ برچسبی نیست.