অজেক্স লগ ইন না করা যখন কাজ বন্ধ?


9

কয়েক মাস ধরে একটি স্বতঃসম্পূর্ণ ক্ষেত্র কাজ করেছে কিন্তু লগ ইন না করে কাজ করা বন্ধ করে দিয়েছে? নিশ্চিত না যখন শেষ কয়েক দিন বা সপ্তাহের মধ্যে (সম্প্রতি ওয়ার্ডপ্রেস আপডেট হয়নি)।

ইতিমধ্যে আছে; যোগ_অ্যাকশন ('wp_ajax_filter_schools', 'ফিল্টার_স্কুলস'); যোগ_অ্যাকশন ('wp_ajax_nopriv_filter_schools', 'ফিল্টার_স্কুলস');

ফাংশন.ফ্পে এবং কোথাও কোনও ত্রুটি নেই।

লগ ইন না করা অবস্থায় আমি যে প্রতিক্রিয়া পাই তা হ'ল;
সাফারি থেকে ... * ইউআরএল অনুরোধ করুন: http: //www.payingforit.org.uk/wp-admin/admin-ajax.php? টার্ম = পবিত্র এবং অ্যাকশন = ফিল্টার_স্কুলগুলি এবং পোস্ট টাইপ = স্কুলের অনুরোধের পদ্ধতি: জিইটি স্থিতি কোড: 302 পাওয়া গেছে *

কোন সাহায্য স্বাগত! DC।

jquery কোড

 $( "#userSelectedSchool" ).bind( "keydown", function( event ) {
            if ( event.keyCode === $.ui.keyCode.TAB &&
                    $( this ).data( "autocomplete" ).menu.active ) {
                event.preventDefault();
            }
        }).autocomplete({
            source: function( request, response ) {

                $.getJSON( "/wp-admin/admin-ajax.php", {


            term: extractLast( request.term ), action: 'filter_schools', postType: 'school'
            }, response );

            dataToBeSent = {
                term: extractLast( request.term ), action: 'filter_schools', postType: 'school'
            }

            console.log(request.term);

        }, select: function( event, ui ) {

            var terms = split( this.value );
            // remove the current input
            terms.pop();
            // add the selected item
            terms.push( ui.item.id );
            // add placeholder to get the comma-and-space at the end // ui.item.label
            terms.push( "" );
            this.value = ui.item.label;

            $('input[name=userSchool]').val(ui.item.urn)

            return false;

        }, open: function() { $('.ui-menu').width(300) }

});

ফাংশন.এফপি

add_action('wp_ajax_filter_schools', 'filter_schools');
add_action('wp_ajax_nopriv_filter_schools', 'filter_schools');

function filter_schools(){
    global $wpdb; // this is how you get access to the database

    $str = $_GET['term'];
    $action = $_POST['action'];
    $postType = $_POST['postType'];

    $finalArgs =  array (
        'posts_per_page'=>5,
        'order' => 'ASC',
        'post_type' => 'school'
    );

    $searchSchools = new WP_Query( $finalArgs );
    $mypostids = $wpdb->get_col("select ID from $wpdb->posts where post_title LIKE '".$str."%' ");

    $args = array(
        'post__in'=> $mypostids,
        'post_type'=>'school',
        'orderby'=>'title',
        'order'=>'asc'
    );

    $res = new WP_Query($args);
    while( $res->have_posts() ) : $res->the_post();

        global $post;

        $EstablishmentNumber = get_post_meta($post->ID,'EstablishmentNumber', true);
        $URN = get_post_meta($post->ID,'URN', true);
        $add = get_post_meta($post->ID,'address', true);

        $schl = array('post_id'=>$post->ID,'id'=>$EstablishmentNumber, 'label'=>$post->post_title.', '.$add['town'].' '.$add['postcode'] , 'value'=>$EstablishmentNumber, 'urn'=>$URN );
        $matchedSchools[] = $schl;

    endwhile;

    echo json_encode($matchedSchools);
    wp_reset_postdata();
    die(); // this is required to return a proper result
}

উত্তর:


6

সম্পাদনা: আমি আমার মূল উত্তরটি নীচে রেখেছি, তবে আমি কী ভাবছিলাম তা নিশ্চিত নই ... আপনার কখনই ট্রিগার করার দরকার নেই do_action( 'wp_ajax...' )

যদিও আমি নিশ্চিত সমস্যাটি কি তা হতে পারে না, প্রশ্নে কোড মোটামুটিভাবে ঠিক আছে (আমি মনে করি $_POSTহওয়া উচিত $_GETসঙ্গে .getJSON)।


এটিকে শীর্ষে রাখার চেষ্টা করুন ...

if(isset($_REQUEST['action']) && $_REQUEST['action']=='filter_schools'):
        do_action( 'wp_ajax_' . $_REQUEST['action'] );
        do_action( 'wp_ajax_nopriv_' . $_REQUEST['action'] );
endif;

আমি মনে করি ওয়ার্ডপ্রেস লগ-ইন না করা ব্যবহারকারীদের জন্য স্বয়ংক্রিয়ভাবে আজাক্স ক্রিয়া করে না। সম্ভাব্যভাবে অ-ব্যবহারকারীরা এমন জিনিসগুলি করতে পারে যেগুলি তারা করতে সক্ষম হবেন বলে মনে করছেন না।

আমি সম্ভবত সেই পরিবর্তন হবে $_GETS & %_POSTথেকে গুলি $_REQUESTখুব।


ধন্যবাদ স্টিফেন - যারা আপডেট যখন লগইন নেই প্রণীত কিন্তু তার এখনো কাজ না।
v3nt

কিছুটা ঘোরাঘুরি করার পরে মনে হয় অ্যাড_ফিল্টারের পরে ডো-অ্যাকশন আসতে হবে। এখন কাজ করছেন তাই ধন্যবাদ স্টিফেন ...
v3nt

প্রশাসনিক নন-ব্যবহারকারীদের ক্ষেত্রেও আমার একই সমস্যা ছিল। এই সমাধানটি এটি তৈরি হয়েছিল, এবং অর্ডারটি আমার ক্ষেত্রেও গুরুত্বপূর্ণ ছিল।
brasofilo

2

ফিল্টার_স্কুলগুলি () ফাংশনের আগে ফাইনাল ওয়ার্কিং কোড।

if(isset($_REQUEST['action']) && $_REQUEST['action']=='filter_teachers'):
    add_action('wp_ajax_filter_teachers', 'filter_teachers');
    add_action('wp_ajax_nopriv_filter_teachers', 'filter_teachers');
endif;

if(isset($_REQUEST['action'])):
        do_action( 'wp_ajax_' . $_REQUEST['action'] );
        do_action( 'wp_ajax_nopriv_' . $_REQUEST['action'] );
endif;

ড্যানিয়েল, আদেশটি বিবেচনা করা উচিত নয়: আমার কাছে একটি প্লাগ-ইন রয়েছে যেখানে ডওঅ্যাকশনগুলি শীর্ষে রয়েছে এবং ফাংশনটি ডাকা হওয়ার ঠিক আগে অ্যাডঅ্যাক্টগুলি আসে। এছাড়াও 'add' বিবৃতিগুলির ভিতরে অ্যাড_অ্যাক্টসগুলি থাকা দরকার নেই। উপরোক্ত যদি কাজ করে তবে তা কাজ করে!
স্টিফেন হ্যারিস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.