💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ مهدی فانی
راهنمایی در مورد استفاده از لود مور برای کوئری‌های غیر سفارشی
جامعه وردپرس (برنامه نویسی) ایجاد شده در ۱۰ اسفند ۱۴۰۲

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

من این کد رو نوشتم ولی مقداری که برای متغیر html برمیگردونه یک رشته خالی هست.

<?php
add_action('wp_ajax_category_load_more','category_load_more');
add_action('wp_ajax_nopriv_category_load_more','category_load_more');
function category_load_more()
{
   $html_outpout = '';
   if (have_posts()): ?>
       <?php while (have_posts()):
           the_post();
           $html_outpout .= '
<div class="col-sm-6 col-lg-3">
   <div class="card mb-4">
       <div class="card-fold position-relative"></div>
       <div class="card-body px-0 pt-3"> <h2 class="card-title"><a href="' . get_permalink() . '" class="btn-link text-reset stretched-link">' . the_title() . '</a></h2>
       <ul class="nav nav-divider align-items-center small">
           <li class="nav-item"></li>
           <li class="nav-item">' . get_the_date() . '</li>
       </ul>
       </div>
   </div>
</div>
';
       endwhile;
   else: ?>
       <div class="alert-no-post">هنوز مطلبی در این دسته بندی وجود ندارد.</div>
   <?php
   endif;
   var_dump($html_outpout);
   wp_send_json([
           'content'=> $html_outpout,
           'success'=> true,
   ], 200);
}

خروجی ایجکس من هم این طوری شده:
<div class="alert-no-post">هنوز مطلبی در این دسته بندی وجود ندارد.</div>
   {"content":"","success":true}


اصلا وارد حلقه نمیشه که بخواد کانتنت رو ذخیره کنه. دلیلش چیه؟

برای گرفتن صفحه بندی‌ها و تعداد مطالب هر دسته بندی هم اومدم روی دکمه لود مور از دیتا اتربیوت‌ها استفاده کردم. اینطوری:
این کارم درسته؟ ممنون میشم راهنمایی کنین.


<?php global $wp_query; ?>
<div class="col-12 text-center mt-5">
<button id="category-load-more" type="button" class="btn btn-primary-soft" data-page="<?php echo get_query_var('paged') ? get_query_var('paged') : 1;?>" data-max="<?php echo $wp_query->max_num_pages; ?>">مشاهده بیشتر <i class="bi bi-arrow-down-circle align-middle ms-2"></i></button>
</div>

مشکل رو برطرف کردم:

تغییرات کدم به این شکل انجام دادم.

 

<?php
add_action('wp_ajax_load_more', 'load_more');
add_action('wp_ajax_nopriv_load_more', 'load_more');
function load_more()
{
$args = array(
'post_type' => 'post',
'posts_per_page' => $_POST['page'],
'cat' => $_POST['category'],
'paged'=> $_POST['paged'],
'orderby' => 'date',
'order' => 'DESC',
);
$arch_post_query = new WP_Query($args);
if ($arch_post_query->have_posts()):
$html = '';
while ($arch_post_query->have_posts()):
$arch_post_query->the_post();
$html .= '
<div class="col-sm-6 col-lg-3">
<div class="card mb-4">
<div class="card-fold position-relative">'. post_thumbnail_for_ajax() .'</div> <div class="card-body px-0 pt-3">
<h2 class="card-title"><a href="'.get_the_permalink().'" class="btn-link text-reset stretched-link">' . get_the_title() . '</a></h2>
<ul class="nav nav-divider align-items-center small">
<li class="nav-item">'.get_the_author_meta( 'display_name', get_the_author_meta('ID') ).'</li>
<li class="nav-item">'.get_the_date().'</li>
</ul>
</div>
</div>
</div>
';
endwhile;
else:
echo "پستی وجود ندارد...";
endif;
wp_reset_postdata();
wp_send_json([
'content' => $html,
'max_page'=>$arch_post_query->max_num_pages,
'total_post'=>$arch_post_query->found_posts,
'success' => true,
], 200);
}

 

دیتای آیدی صفحه و پست پر پیج آرگمان‌های کوئری رو از طریق دیتا اتربیوت‌ها دریافت کردم:

<?php
global $wp_query;
?>
<div class="col-12 text-center mt-5">
<button id="archive-load-more" type="button" class="btn btn-primary-soft" data-cat="<?php echo get_query_var('cat'); ?>" data-page="<?php echo get_query_var('posts_per_page'); ?>" data-paged="<?php echo get_query_var('paged') ? get_query_var('paged') : 1;?>" data-max="<?php echo $wp_query->max_num_pages; ?>">مشاهده بیشتر <i class="bi bi-arrow-down-circle align-middle ms-2"></i></button>
</div>
مهدی فانی ۱۲ اسفند ۱۴۰۲، ۱۳:۱۶

با سلام و احترام

از اینکه مشکل رو حل کردید و پاسخ رو برای راهنمایی هم دوره هاتون قرار دادید متشکریم.

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