ایراد در ترتیب نمایش محصولات

sajjadkh65

تازه وارد
سلام به همه دوستان

بعد از آپدیت ووکامرس ( نگارش 3.4.3 ) ترتیب نمایش محصولات برعکس شده. در حالت پیشفرض ترتیب نمایش به صورت جدیدترین محصولات هست. اما فقط در صفحه فروشگاه این ترتیب رعایت میشه و در بقیه صفحه‌ها (دسته‌بندی و...) دقیقا برعکس نمایش داده میشه یعنی اول محصولات قدیمی نشون میده.

لطف میکنید راهنمایی کنید مشکل چی میتونه باشه؟

 

Mohammad

مدیر انجمن
پرسنل مدیریت
این مورد برای ما مشاهده نشده

قالب رو تعویض کنید و تست بگیرید. نتیجه رو بگید 

همچنین افزونه های مشکوک رو غیر فعال کنید.

 

sajjadkh65

تازه وارد
این مورد برای ما مشاهده نشده

قالب رو تعویض کنید و تست بگیرید. نتیجه رو بگید 

همچنین افزونه های مشکوک رو غیر فعال کنید.
سلام. وقتتون بخیر.

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

برای صفحه دسته بندی ‌ها دقیقا چه فایلی فراخوانی میشه؟ category.php یا page.php ؟

در ادامه کدهایی که در این دو صفحه هست رو اینجا میذارم:

category.php

<?php get_header(); ?>
<div class="container-fluid mt-3 mb-3 pt-2">
<div class="row"><!-- row 1 -->
<div class="col-sm-9 order-sm-2 text-right woocommerce"><!-- main content -->
<div class="p-title rounded-top">
<h3 class=""><?php the_title(); ?></h3>
<p><?php echo category_description(); /* displays the category's description from the Wordpress admin */ ?></p>
</div>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<div class="row post-cat">
<div class="col-sm-3">
<img class="img-thumbnail rounded float-right ml-2" src="<?php echo catch_that_image() ?>" />
</div>
<div class="col-sm-9">
<h2><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
<div class="post-meta">
<?php _e('نوشته‌ی: '); echo get_the_author_meta('display_name'); echo ' | ' ; the_time(' j F Y '); ?>
</div><!--.postMeta-->
<?php the_excerpt(); ?>
</div>
</div><!-- row-->
<?php endwhile; else: ?>
<div class="no-results">
<p><strong><?php _e('اوخ، متأسفانه مشکلی وجود دارد!'); ?></strong></p>
<p><?php _e('به نظر می‌رسد چیزی اینجا نباشد، می‌تونی از فرم جست‌وجو پایین استفاده کنی.'); ?></p>
<?php get_search_form(); /* outputs the default Wordpress search form */ ?>
</div><!--noResults-->
<?php endif; ?>
<div class="oldernewer">
<p class="older"><?php next_posts_link('« نوشته‌های قدیمی‌تر') ?></p>
<p class="newer"><?php previous_posts_link('نوشته‌های جدیدتر »') ?></p>
<div class="clear"></div>
</div><!--.oldernewer-->
</div><!-- main content -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>


-------------------------------

page.php

کد:
<?php if (is_shop() | is_product_category() | is_product_tag()) { ?>
    <?php get_header(); ?>
<div class="container-fluid mt-3 mb-3 pt-2">
  <div class="row"><!-- row 1 -->
    <div class="col-sm-9 order-sm-2 text-right woocommerce"><!-- main content -->
		<?php while ( have_posts() ) : the_post(); ?>
			<div id="product-<?php the_ID(); ?>" <?php wc_product_class(); ?>>
			<div class="p-title rounded-top">
				<h3 class=""><?php the_title(); ?></h3>
				<p><?php echo category_description(); /* displays the category's description from the Wordpress admin */ ?></p>
			</div>
				<div class="w-100 mt-3">
					<?php the_content(); ?>
				</div>
			</div> <!-- id product -->
			<?php endwhile; // end of the loop. ?>
    </div><!-- main content -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>
<?php } else { ?>
    <?php get_header(); ?>
<div class="container-fluid mt-3 mb-3 pt-2">
  <div class="row">
    <div class="col-sm-9 order-sm-2 text-right">
		<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
			   <div class="shadow-sm p-2 border rounded " id="post" <?php post_class('post'); ?> >
				   <article>
					   <h1><?php the_title(); ?></h1>
					   <div class="post-meta">
					   <?php edit_post_link('<small> ویرایش نوشته /</small>','',''); ?>
					   </div><!--.postMeta-->
					   <div class="post-content-single">
						   <?php the_content(); ?>
						   <?php wp_link_pages('before=<div class="pagination">&after=</div>'); ?>
					   </div><!--.post-content-->
				   </article>
			   </div><!-- #post-## -->
		<?php endwhile; /* end loop */ ?>
    </div><!-- main content -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>
<?php } ?>
 

sajjadkh65

تازه وارد
سلام. به همه دوستان.

با توجه به اینکه این ایراد در قالب پیش فرض وجود نداشت، شروع به جستجو کردم و راه حل مشکل رو پیدا کردم. اینجا توضیح میدم که اگر دوست دیگه‌ای این مشکل براش پیش اومد بتونه استفاده کنه.

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

archive-product.php استفاده میکنه. اما اگر قالب با ووکامرس سازگار نباشه، ووکامرس این فایل رو نادیده میگیره . خب چطور باید به ووکامرس بفهمونیم که قالبی که طراحی کردیم سازگار هست؟

کافیه که در فانکشن قالبتون کد زیر رو قرار بدید:

add_theme_support('woocommerce');


با قرار دادن این کد ووکامرس فایل‌های archive-product.php رو به درستی فراخوانی میکنه. البته توجه کنید که فایل woocommerce.php رو در پوشه قالبتون نباید داشته باشید، چون این فایل از اولویت بالاتری نسبت به بقیه برخوردار هست و اول این فایل فراخوانی میشود بنابراین شما نمیتونید فایل زیرمجموعه رو برای دسته بندی ها، جداگانه فراخوانی کنید.

نکته بعدی اینکه برای نمایش صحیح محصولات باید از حلقه ووکامرس استفاده کنید. یعنی بجای استفاده از حلقه پیشفرض وردپرس کد زیر رو در جا مناسبی که میخواهید قرار بدید:

<?php woocommerce_content(); ?>


کد بالا رو بجای کدهای زیر در فایل موردنظر قرار بدید:

کد:
<?php if ( have_posts() ) :
حلقه وردپرس
<?php endif; ?>
 
بالا