🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۵ محمد یاسین ابراهیمی
مشکل در خواهست ajax ارور 500
جامعه وردپرس (برنامه نویسی) ایجاد شده در ۱۷ تیر ۱۴۰۲

سلام خدمت شما خسته نباشید

مشکل برای من پیش اومده موفق که دسته‌ها انتخاب می‌کنم ارور 500 میده چیزی برنمیگرده که داخل آموزش استاد اگه روی دسته بدونه انتخاب نویسنده کلیک کنه یعنی مطالب اون دسته برگشت داده میشه

کد‌ها فیلتر و فایل ajax را خدمت شما ضمیمه کردم

لطفا برسی فرمایید

اگه امکان داره کد‌های که داخل جلسات آموزش داده شده را در آخر ضمیمه فرمایید تا بتوانیم در صورت مشکل کد‌ها برسی کنم متشکرم از شما

سلام وقت بخیر

عموما ارور‌های ۵۰۰ به معنای اینه که ریکوئست به مسیر درستی زده نمیشه

حتما چک کنید که فایلی که برای نوشتن کد‌های بک اند ajax نوشتین رو تو فایل اصلی فراخوانی کنید و به اسم فانکشنتون هم خیلی دقت کنید که چیزی که تو php مینویسین و چیزی که تو jquery مینویسین یکی باشه

ابوالفضل محجوب ۱۷ تیر ۱۴۰۲، ۱۱:۵۹

تمام موار که شما فرمودید به صورت کامل انجام داد تاحالا بیش از 10 بار چک کردم دونه دونه فقط تنها ایراد که می‌گیره از کد زیر است اگه این مورد را قرار ندم مشکل نداره تا این کد قرار میگیره ارو 500 میداه داخل previw هم یک خطای مهم را میده این کد‌ها را هم به صورت کامل قرار میدم تا برسی فرمایید

$user_id = implode(',', $_POST['user_id']);

کد ajax

jQuery(document).ready(function ($){
    $('#archive-filter').on('submit',function (e){
        e.preventDefault();
        let user_id= [];
        let post_term_id= [];
        let tech_term_id= [];
        $.each($(".user-id:checked"),function (){
           user_id.push($(this).val());
        });
        $.each($(".post-term-id:checked"),function (){
           post_term_id.push($(this).val());
        });
        $.each($(".tech-term-id:checked"),function (){
           tech_term_id.push($(this).val());
        });
        $.ajax({
            url:ajax.ajaxurl,
            type:'post',
            datatype:'json',
            data: {
                action: 'replywp_filter_content',
                user_id:user_id,
                post_term_id:post_term_id,
                tech_term_id:tech_term_id
            },
            beforeSend:function (){
                $('#filter-content-res').css('opacity','.3');
                $('.find-post-num-title').text('تعداد مطالب مرتبط با فیلتر شما :');
            },
            success:function (response){
                if(response.success){
                    // console.log(response.content);
                    if(response.content != null){
                        $('#filter-content-res').html(response.content);
                        $('.find-post-num').text(response.total_post);
                    }else {
                        $('#filter-content-res').html('
مطالب یافت نشد !!!
'
); $('.find-post-num').text(0); } } }, error:function (error){ if(error){ $('#filter-content-res').html('
مطالب یافت نشد !!!
'
); } }, complete:function (){ $('#filter-content-res').css('opacity','1'); } }); }); });

کد فاینشن


add_action('wp_ajax_replywp_filter_content', 'replywp_filter_content');
add_action('wp_ajax_nopriv_replywp_filter_content', 'replywp_filter_content');
function replywp_filter_content(){
    $user_id = implode(',', $_POST['user_id']);
    $args = [
        'post_type' => ['post','tech'],
        'author' => $user_id,
    ];
    $the_query = new WP_Query($args);
    if ($the_query->have_posts()):
        $html_output = '';
        while ($the_query->have_posts()):$the_query->the_post();
            $html_output .= '
                                

'"> ' . get_the_title() . '

' . PostExcerpt::replywp_excerpt_limit() . '

' . get_avatar(get_the_author_meta('ID'), 35, '', get_the_author_meta('display_name')) . '
' . get_the_author_posts_link() . '
'
; endwhile; endif; wp_reset_postdata(); wp_send_json([ 'content' => $html_output, 'success' => true, 'total_post'=>$the_query->found_posts ], 200); }

ایراد این کد الان چه است لطفا برسی فرمایید

محمد یاسین ابراهیمی ۱۷ تیر ۱۴۰۲، ۱۲:۱۱

متوجه شدم مشکل کجاست

در واقع شما با ajax دارین آرایه میفرستین و در فانکشن وردپرس هم دارین مثل آرایه باهاش برخورد میکنید

در صورتی که همه اطلاعات بصورت string فرستاده میشن یعنی این

$_POST['user_id']

دیتا تایپ string داره پس نمیشه از implode استفاده کرد

ابوالفضل محجوب ۱۷ تیر ۱۴۰۲، ۱۶:۱۳

سلام خدمت شما دوست عزیز خدا را شکر مشکل را برطرف کردم از قسمت شرط گذاری بود

$user_id = implode(',', $_POST['user_id']);

اگه این مورد را بیرون از شرط قرار بدم مشکل پیدا می‌کنه نمیدونم مال استاد چرا خطا نمی‌داد اما به هزار راه تست کردم و مشکل برطرف کد‌های که به صورت شرطی قرار داد را این قسمت قرار میدم دوستان که همچین مشکل داشته باشند بتوانند اسفتاده کنند موفق باشید

if(empty($_POST['post_id']) && empty($_POST['product_id']) && empty($_POST['tech_id'])  && empty($_POST['user_id'])  && empty($_POST['post_type'])){
    $args = [
        'post_type'=>['post','tech','product'],
    ];
}elseif (empty($_POST['post_id']) && empty($_POST['product_id']) && empty($_POST['tech_id'])  && empty($_POST['user_id']) ){
    $args = [
        'post_type'=>['post','tech','product'],
        'meta_query' => [
            [
                'key' => '_post_types',
                'value' => $_POST['post_type'],
                'compare' => '=',
            ],
        ]
    ];
}elseif (empty($_POST['post_id']) && empty($_POST['product_id']) && empty($_POST['tech_id'])  && empty($_POST['post_type']) ){
    $user_id = implode(',',$_POST['user_id']);
    $args = [
        'post_type'=>['post','tech','product'],
        'author'=>$user_id
    ];
}elseif (empty($_POST['post_id']) && empty($_POST['product_id']) && empty($_POST['tech_id'])){
    $user_id = implode(',',$_POST['user_id']);
    $args = [
        'post_type'=>['post','tech','product'],
        'author'=>$user_id,
        'meta_query' => [
            [
                'key' => '_post_types',
                'value' => $_POST['post_type'],
                'compare' => '=',
            ],
        ]
    ];
}elseif (empty($_POST['post_type']) && empty($_POST['user_id'])){
    $args = [
        'post_type'=>['post','tech','product'],
        'tax_query' => array(
        'relation' => 'OR',
        array(
            'taxonomy' => 'category',
            'field' => 'term_id',
            'terms' => $_POST['post_id'],
        ),
        array(
            'taxonomy' => 'cat-tech',
            'field' => 'term_id',
            'terms' =>  $_POST['tech_id'],
        ),
        array(
            'taxonomy' => 'product_cat',
            'field' => 'term_ic',
            'terms' =>  $_POST['product_id'],
        ),
    )
    ];
}elseif (empty($_POST['post_type'])){
    $user_id = implode(',',$_POST['user_id']);
    $args = [
        'post_type'=>['post','tech','product'],
        'author'=>$user_id,
        'tax_query' => array(
            'relation' => 'OR',
            array(
                'taxonomy' => 'category',
                'field' => 'term_id',
                'terms' => $_POST['post_id'],
            ),
            array(
                'taxonomy' => 'cat-tech',
                'field' => 'term_id',
                'terms' =>  $_POST['tech_id'],
            ),
            array(
                'taxonomy' => 'product_cat',
                'field' => 'term_ic',
                'terms' =>  $_POST['product_id'],
            ),
        )
    ];
}elseif (empty($_POST['user_id'])){
    $args = [
        'post_type'=>['post','tech','product'],
        'tax_query' => array(
            'relation' => 'OR',
            array(
                'taxonomy' => 'category',
                'field' => 'term_id',
                'terms' => $_POST['post_id'],
            ),
            array(
                'taxonomy' => 'cat-tech',
                'field' => 'term_id',
                'terms' =>  $_POST['tech_id'],
            ),
            array(
                'taxonomy' => 'product_cat',
                'field' => 'term_ic',
                'terms' =>  $_POST['product_id'],
            ),
        ),
        'meta_query' => [
            [
                'key' => '_post_types',
                'value' => $_POST['post_type'],
                'compare' => '=',
            ],
        ]
    ];
}
else{
    $user_id = implode(',',$_POST['user_id']);
    $args = [
        'post_type'=>['post','tech','product'],
        'author'=>$user_id,
        'tax_query' => array(
            'relation' => 'OR',
            array(
                'taxonomy' => 'category',
                'field' => 'term_id',
                'terms' => $_POST['post_id'],
            ),
            array(
                'taxonomy' => 'cat-tech',
                'field' => 'term_id',
                'terms' =>  $_POST['tech_id'],
            ),
            array(
                'taxonomy' => 'product_cat',
                'field' => 'term_ic',
                'terms' =>  $_POST['product_id'],
            ),
        ),
        'meta_query' => [
            [
                'key' => '_post_types',
                'value' => $_POST['post_type'],
                'compare' => '=',
            ],
        ]
    ];
}

داخل این کد تمام موارد چک شده است بدونه هیچ مشکلی کار می‌کنه در صورت که دوستان راحل بهتری دارند حتما به اشتراک بزارند موفق و پیروز باشید

محمد یاسین ابراهیمی ۱۸ تیر ۱۴۰۲، ۱۰:۵۴

موفق باشید.

بهترین پاسخ
محسن موحد ۱۸ تیر ۱۴۰۲، ۱۳:۱۰