۳ قاریی
content = null
جامعه وردپرس (برنامه نویسی) ایجاد شده در ۲۴ بهمن ۱۴۰۳
<?php
add_action("wp_ajax_rating", "rating");
add_action("wp_ajax_nopriv_rating", "rating");
function rating()
{
    $post_id = get_the_ID(); // یا به صورت دستی ID پست را مشخص کنید
    $terms = get_the_terms($post_id, 'cast_tag');
    $tags_array = array();
    if ($terms && !is_wp_error($terms)) {
        foreach ($terms as $term) {
            $tags_array[] = $term->name; // افزودن نام تگ به آرایه
        }
    }
    // نمایش آرایه تگ‌ها
    $shows = array_map('strtolower', $tags_array);
    // ایجاد حلقه سفارشی در وردپرس
    $args = array(
        'meta_key' => '_imdb_score',
        'orderby' => 'meta_value_num',
        'order' => 'DESC',
        'post_type' => 'post',
        'posts_per_page' => -1,
    );
    $loop = new WP_Query($args);
    if ($loop->have_posts()):
        while ($loop->have_posts()):
            $loop->the_post();
            $post_title = strtolower(get_the_title());
            // بررسی همخوانی نام پست با آرایه
            if (in_array($post_title, $shows)) {
                // نمایش پست
                $movie_details = get_movie_details(get_post_meta(get_the_ID(), '_my_input_value_key', true));
                $year = $movie_details->Year;
                $number_string = strval($year);
                // گرفتن چهار رقم اول
                $first_four_digits = substr($number_string, 0, 4);
                $html_output = '
              <section class="wrapper-film-profile-artist col-6 col-sm-4  col-lg-3">
                <div class="position-relative wrapper-header-slide">
                    <div class="top-info d-flex justify-content-between">
                        <div class="date">' .
                    // نمایش نتیجه
                    $first_four_digits
                    . '</div>
                        <div class="rating d-flex">
                            <img src="' . get_template_directory_uri() . './assets/image/IMDB_Logo_2016.svg' . '" alt="" />
                            <p>' .
                    $movie_details->imdbRating
                    . '<span>/10</span></p>
                        </div>
                    </div>
                    <img src="' .
                    $movie_details->Poster
                    . '" alt="' .
                    $movie_details->Title
                    . '" />
                    <h4 class="position-relative">
                     <a href="' . get_the_permalink() . '" >' . $movie_details->Title . '</a>
                    </h4>
                </div>
            </section>
            ';
            }
        endwhile;
    endif;
    // بازنشانی داده‌های پست
    wp_reset_postdata();
    wp_send_json([
        'content' => $html_output,
        'success' => true
    ], 200);
}
;

 

چرا content null بر میگردونه
حتی $html_output رو فقط کد اچ تی ام ال مینویسم بازم null برمیگردونه

image-hlmw2osa.png

سلام،

متغیر ‎$html_output‎ فقط داخل حلقه و درست زمانی مقدار میگیره که شرط ‎if (in_array($post_title, $shows))‎ برقرار باشه. پس اگر هیچ پستی عنوانش داخل اون آرایه نباشه یا حلقه خالی بمونه، مقدار پیش‌فرض ‎$html_output‎ خالی میمونه و در نهایت با مقدار ‎null‎ برمیگرده. پس باید مطمئن شی حداقل یه پست شرایط رو پاس کنه یا اگه نیازی نیست، قبل حلقه یه مقدار اولیه برای ‎$html_output‎ در نظر بگیری.

محسن موحد ۲۴ بهمن ۱۴۰۳، ۲۲:۱۷

وقتی شرط برقراره بازم null برمیگرده

 

قاریی ۲۵ بهمن ۱۴۰۳، ۱۳:۰۶
<?php
    $post_id = get_the_ID(); // یا به صورت دستی ID پست را مشخص کنید
    $terms = get_the_terms($post_id, 'cast_tag');
    $tags_array = array();
    if ($terms && !is_wp_error($terms)) {
        foreach ($terms as $term) {
            $tags_array[] = $term->name; // افزودن نام تگ به آرایه
        }
    }
    // نمایش آرایه تگ‌ها
    $shows = array_map('strtolower', $tags_array);
    // ایجاد حلقه سفارشی در وردپرس
    $args = array(
        'meta_key' => '_imdb_score',
        'orderby' => 'meta_value_num',
        'order' => 'DESC',
        'post_type' => 'post',
        'posts_per_page' => -1,
    );
    $loop = new WP_Query($args);
    if ($loop->have_posts()):
        while ($loop->have_posts()):
            $loop->the_post();
            $post_title = strtolower(get_the_title());
            // بررسی همخوانی نام پست با آرایه
            if (in_array($post_title, $shows)) {
                // نمایش پست
                $movie_details = get_movie_details(get_post_meta(get_the_ID(), '_my_input_value_key', true));
                $year = $movie_details->Year;
                $number_string = strval($year);
                // گرفتن چهار رقم اول
                $first_four_digits = substr($number_string, 0, 4);
             echo   $html_output = '
              <section class="wrapper-film-profile-artist col-6 col-sm-4  col-lg-3">
                <div class="position-relative wrapper-header-slide">
                    <div class="top-info d-flex justify-content-between">
                        <div class="date">' .
                    // نمایش نتیجه
                    $first_four_digits
                    . '</div>
                        <div class="rating d-flex">
                            <img src="' . get_template_directory_uri() . './assets/image/IMDB_Logo_2016.svg' . '" alt="" />
                            <p>' .
                    $movie_details->imdbRating
                    . '<span>/10</span></p>
                        </div>
                    </div>
                    <img src="' .
                    $movie_details->Poster
                    . '" alt="' .
                    $movie_details->Title
                    . '" />
                    <h4 class="position-relative">
                     <a href="' . get_the_permalink() . '" >' . $movie_details->Title . '</a>
                    </h4>
                </div>
            </section>
            ';
            }
        endwhile;
    endif;
    // بازنشانی داده‌های پست
    wp_reset_postdata();

درود 
من این کد رو امتحان کردم و به درستی کد رو برمیگردونه 
 

image-6jt0clnu.png

 

ولی وقتی میخوام که به صورت ajax کد رو برگردونه null برمیگردونه 

 

 

قاریی ۲۵ بهمن ۱۴۰۳، ۱۳:۴۵