تبلیغات

تبلیغات تبلیغات
حراجی دامنه های ویژهمشاهده
آخرین ارسال های تالار مشاهده انجمن
وردپرس یا جوملا؟ 0 پاسخ 80 بازدید بهترین وب سرور 0 پاسخ 77 بازدید معرفی سایت و اپ لیلام 4 پاسخ 116 بازدید بهترین cdn 0 پاسخ 96 بازدید 5 ارز دیجیتال برتر برای سرمایه گذاری در سال 2021 2 پاسخ 2790 بازدید فروش سایت تگ تچ 5 پاسخ 1533 بازدید فروش حق امتیاز قالب وردپرس در مارکت ژاکت 9 پاسخ 1568 بازدید دانلود رایگان مجموعه طرح لایه باز قالب پست اینستاگرام 2 پاسخ 111 بازدید قفل قالب BuddyBoss 3 پاسخ 157 بازدید ربات خودکار اینستاگرام چی خوبه 5 پاسخ 628 بازدید

تبلیغات
تبلیغات تبلیغات

دکمه مطالب بیشتر در وردپرس با Ajax

مقالات,آموزش,ترفند , وردپرس

در این مقاله از آموزش وردپرس ، نحوه ایجاد دکمه مطالب بیشتر در وردپرس با Ajax را بدون افزونه به شما آموزش خواهیم داد.

  • نکته: در این مقاله جهت آموزش وردپرس از پوسته twentyseventeen استفاده می کنیم.

 

قدم اول – ساخت دکمه مطالب بیشتر

آموزش رو با ساخت دکمه “مطالب بیشتر” آغاز می کنیم ، فقط باید یک قانون رو رعایت کنیم: فقط زمانی دکمه نمایش داده میشه که مطلبی برای نمایش وجود داشته باشه و از طریق کد $wp_query->max_num_pages > 1 چک می کنیم.

 

کدهای زیر را در صفحه index.php در خط 61 وقبل از بسته شدن تگ <main> اضافه میکنیم ، و کدهای مربوط به pagination در خط 49 را پاک می کنیم:

<?php          
                if (  $wp_query->max_num_pages > 1 )
                 echo '<div class="bistscript_loadmore">مطالب بیشتر</div>'; 
 ?>

برای اینکه دکمه زیباتر دیده بشه کدهای CSS زیر را به فایل Style.css اضافه میکنیم:

.bistscript_loadmore{
 background-color: #ddd;
 border-radius: 2px;
 display: block;
 text-align: center;
 font-size: 14px;
 font-size: 0.875rem;
 font-weight: 800;
 letter-spacing:1px;
 cursor:pointer;
 text-transform: uppercase;
 padding: 10px 0;
 transition: background-color 0.2s ease-in-out, border-color 0.2s ease-in-out, color 0.3s ease-in-out;  
}
.bistscript_loadmore:hover{
 background-color: #767676;
 color: #fff;
}

قدم دوم: انتقال پارامترها به اسکریپت

قطعه کد زیر به شما اجازه میدهد پارامترهای لازم را به اسکریپت انتقال داده و همین موضوع باعث شده که دکمه “مطالب بیشتر” در تمام صفحات tags، categories، post type archives، search قابل استفاده باشد.

 

کد زیر را به فایل functions.php اضافه می کنیم:

function bistscript_my_load_more_scripts() {
 global $wp_query; 
 wp_register_script( 'my_loadmore', get_stylesheet_directory_uri() . '/myloadmore.js', array('jquery') );
 wp_localize_script( 'my_loadmore', 'bistscript_loadmore_params', array(
 'ajaxurl' => site_url() . '/wp-admin/admin-ajax.php', 
 'posts' => json_encode( $wp_query->query_vars ),
 'current_page' => get_query_var( 'paged' ) ? get_query_var('paged') : 1,
 'max_page' => $wp_query->max_num_pages
 ) );
 wp_enqueue_script( 'my_loadmore' );
}
add_action( 'wp_enqueue_scripts', 'bistscript_my_load_more_scripts' );

قدم سوم: اسکریپت myloadmore.js

یک فایل به نام myloadmore.js در دایرکتوری پوسته twentyseventeen ساخته و کدهای زیر را به آن اضافه میکنیم:

jQuery(function($){
 $('.bistscript_loadmore').click(function(){
 var button = $(this),
     data = {
 'action': 'loadmore',
 'query': bistscript_loadmore_params.posts,
 'page' : bistscript_loadmore_params.current_page
 };
 $.ajax({
 url : bistscript_loadmore_params.ajaxurl, 
 data : data,
 type : 'POST',
 beforeSend : function ( xhr ) {
 button.text('لطفا صبر کنید...'); },
 success : function( data ){
 if( data ) { 
 button.text( 'مطالب بیشتر' ).before(data); // افزودن مطلب جدید
 bistscript_loadmore_params.current_page++;
 if ( bistscript_loadmore_params.current_page == bistscript_loadmore_params.max_page ) 
 button.remove(); 
 } else {
 button.remove(); 
 }
 }
 });
 });
});

کدهای بالا جهت ایجاد ارتباط ajax و فراخوانی تابع مورد نظر جهت دریافت اطلاعات مربوط به مطلب بعدی و افزودن آن به انتهای آخرین مطلب می باشد.

  • نکته: با توجه به قالب مورد استفاده، خط 17 می تواند متفاوت باشد و به ساختار HTML قالب مورد استفاده بستگی دارد.

 

قدم چهارم:  کدهای PHP برای Ajax

قدم بعدی افزودن کدهای لازم برای فراخوانی های ajax می باشد ، کدهای زیر را به functions.php اضافه می کنیم:

function bistscript_loadmore_ajax_handler(){
 $args = json_decode( stripslashes( $_POST['query'] ), true );
 $args['paged'] = $_POST['page'] + 1; 
 $args['post_status'] = 'publish';
 query_posts( $args );
 if( have_posts() ) :
 while( have_posts() ): the_post();
 // با توجه به ساختار قالب خود، می توانید کدهای خود را جایگزین خط زیر کنید 
 get_template_part( 'template-parts/post/content', get_post_format() );
 endwhile;
 endif;
 die; 
}
add_action('wp_ajax_loadmore', 'bistscript_loadmore_ajax_handler'); 
add_action('wp_ajax_nopriv_loadmore', 'bistscript_loadmore_ajax_handler');
  • توجه : در خط 9 می توانید کدهای HTML دلخواه مرتبط با پوسته خود را قرار دهید و به دلیل استفاده از پوسته twentyseventeen از کد موجود استفاده شده است.

برای تست دکمه “مطالب بیشتر” ابتدا به قسمت تنظیمات و زیر منوی خواندن رفته و گزینه ” بیشترین تعداد نوشته‌ها در هر برگه‌ی وبلاگ ” را برابر با یک قرار داده و ذخیره می کنیم:

دکمه مطالب بیشتر در وردپرس با Ajax

مقاله دکمه مطالب بیشتر در وردپرس با Ajax به پایان رسید در صورتی که تمام مراحل بالا را پیاده سازی کرده باشید عملکردی مانند تصویر زیر خواهید داشت:

دکمه مطالب بیشتر در وردپرس با Ajax

توجه: در صورتیکه میخواهید بجای کلیک روی دکمه ، با اسکرول کردن مطالب بیشتری بارگذاری شده و نمایش داده شوند، کدهای مربوط به دکمه را در صفحه index.php پاک کرده و کدهای زیر را جایگزین کدهای موجود در فایل myloadmore.js کنید:

jQuery(function($){
 var canBeLoaded = true,
 bottomOffset = 2000; 
 $(window).scroll(function(){
 var data = {
 'action': 'loadmore',
 'query': bistscript_loadmore_params.posts,
 'page' : bistscript_loadmore_params.current_page
 };
 if( $(document).scrollTop() > ( $(document).height() - bottomOffset ) && canBeLoaded == true ){
 $.ajax({
 url : bistscript_loadmore_params.ajaxurl,
 data:data,
 type:'POST',
 beforeSend: function( xhr ){
 canBeLoaded = false; 
 },
 success:function(data){
 if( data ) {
 $('#main').find('article:last-of-type').after( data ); canBeLoaded = true
 bistscript_loadmore_params.current_page++;
 }
 }
 });
 }
 });
});

بروزرسانی : با تشکر از کاربر محترم ، Raymond Dragon کد ارسالی ایشون برای جایگزین کردن خط 9 در بخش چهارم.

 ?>
 <div class="col-md-3"> 
             <article class="panel panel-default"> 
              <div class="panel-body"> 
                <figure class="img"> 
                  <?php the_post_thumbnail('full');?> 
                  <div class="ovrly"></div> 
                  <div class="buttons"> 
                    <a href="<?php the_permalink(); ?>" class="fa fa-ellipsis-h"></a> 
                  </div> 
                </figure> 
                <div class="post"> 
                  <h5><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h5> 
                  <p><?php the_excerpt(); ?></p> 
                </div> 
              </div> 
              <section class="panel-footer"> 
                <div class="row"> 
                  <div class="col-md-5"><i class="fa fa-user-o"></i> <?php the_author_posts_link(); ?></div> 
                  <div class="col-md-3"><i class="fa fa-comments-o"></i> <?php echo get_comments_number(); ?></div> 
                </div> 
              </section> 
             </article> 
            </div> 
        <?php

کدهای بالا را جایگزین تابع get_template_part در بخش چهارم کنید.

موفق باشید

دانلود

هاست ارزان، لایت اسپید، سرور مجازی منطبق با اسکریپت های 20script کلیک کنید >
دانلود بیش از 5میلیون محصول وردپرسی تنهابا 500 هزارتومان (طرح برد برد) کلیک کنید >
مطلب مفیدی بود ؟
نویسنده : تیم محتوای 20اسکریپت 0 مقالات,آموزش,ترفند , وردپرس
لینک کوتاه مطلب : https://www.20script.ir/?p=48667
کلمات کلیدی پست :
مطالب مرتبط
3,780غیرفعال کردن جستجوی برگه‌ها در وردپرس تاریخ : 2018/06/10
5,971اضافه کردن فایل های صوتی به تصاویر در وردپرس تاریخ : 2017/07/15
3,720آموزش رفع خطای HTTP Image Upload در وردپرس تاریخ : 2018/04/26
34,085کد ورود و عضویت کاربران در وردپرس تاریخ : 2015/02/8
2,696حل خطای Serve Scaled Images در GTMetrix تاریخ : 2019/06/18
12,180نمایش مطالب دسته بندی خاص در یک برگه تاریخ : 2018/11/10
1,948افزودن اسکرول به بالا با استفاده از jQuery تاریخ : 2019/09/13
2,916نمایش فید RSS در پیشخوان وردپرس تاریخ : 2019/04/24
5,719نمایش تصویر شاخص در فید وردپرس تاریخ : 2016/06/6
5,855افزونه سئو وردپرس All in One SEO Pack Pro نسخه 2.4.11.4 تاریخ : 2017/02/5
2,604نمایش تاریخ عضویت کاربر در وردپرس تاریخ : 2019/02/27
1,868حذف گزینه تغییر رمز از پیشخوان کاربران در وردپرس تاریخ : 2019/05/5
برخی از قالب های وبلاگ - بیست اسکریپت
قالب عشق بین انگشت ها
قالب دخترونه و آرایش
قالب زیبای ماشین
قالب فانتزی و طنز چِشم
قالب دختر رویایی
قالب وبلاگ دکوراسیون
قالب وبلاگ کلبه و درخت
قالب دختر زیبا
قالب پسرونه غمگین
قالب عاشقانه قلب
شرکت سئو سایت
تبلیغات
تبلیغات
تبلیغات
تبلیغات