رفتن به مطلب

پست های پیشنهاد شده

منظورتون اینه که کد زیر رو تو فانکشن بذارم و کدی رو که جناب m4xs051 دادن تو قالب استفاده کنم؟؟

 

در 3 دقیقه قبل، mehran-b گفته است :

 


add_action('woocommerce_after_shop_loop_item', 'get_star_rating' );
function get_star_rating()
{
    global $woocommerce, $product;
    $average = $product->get_average_rating();
    echo '<div class="star-rating"><span style="width:'.( ( $average / 5 ) * 100 ) . '%"><strong itemprop="ratingValue" class="rating">'.$average.'</strong> '.__( 'out of 5', 'woocommerce' ).'</span></div>';
}

 

اگه همینطوره این کار رو انجام دادم ولی همچنان همه محصولات حتی اون هایی که هیچ امتیازی هم ندارن نمایش داده میشن

لینک به ارسال

درود مجدد

 

الان شما اینو به من بگو.

نتیجه این لوپ همونیه که شما احتیاج داری؟

$args = array(
'post_type' => 'product',
'posts_per_page' => 10,
'post_status' => 'publish',
'meta_key' => '_wc_average_rating',
'orderby' => 'meta_value_num'
);

$query = new WP_Query($args);

 

لینک به ارسال
در 4 دقیقه قبل، mehran-b گفته است :

درود مجدد

 

الان شما اینو به من بگو.

نتیجه این لوپ همونیه که شما احتیاج داری؟


$args = array(
'post_type' => 'product',
'posts_per_page' => 10,
'post_status' => 'publish',
'meta_key' => '_wc_average_rating',
'orderby' => 'meta_value_num'
);

$query = new WP_Query($args);

 

بله. جناب m4xs051 هم انگار تست کردن و جواب گرفتن. منم در صورتی که اون تکه کد رو اضافه کنم جواب میگیرم.

ولی خب در کل این لوپ همون چیزیه که نتیجه درست رو نمایش میده

لینک به ارسال

الان کد زیر رو در نظر بگیرید.

 

<?php

$args = array(
	'post_type' => 'product',
	'posts_per_page' => 10,
	'post_status' => 'publish',
	'meta_key' => '_wc_average_rating',
	'orderby' => 'meta_value_num'
);

$query = new WP_Query($args);

if($query->have_posts()) :
	while($query->have_posts()) :
		$query->the_post();
		
		the_title();
		
	endwhile;
endif;

?>

الان کد بالا بدون هیچ کد اضافه یعنی اگر اون فانکشنی که در پست های قبلی دربارش صحبت کردیم هم از فایل functions.php بردارید باید عنوان 10 محصول برتر رو بر اساس امتیاز نشون بده.

نشون میده؟

لینک به ارسال
در 3 ساعت قبل، mehran-b گفته است :

نشون میده؟

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

ویرایش شده توسط maraljoon
لینک به ارسال
در 3 ساعت قبل، maraljoon گفته است :

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

پس در نتیجه اون ویجت ووکامرس هم که میاد محصولات رو برای شما بر اساس پر امتیاز ترین ها لیست میکنه کار نمیکنه؟

چون ما این آرگومان متد سازنده WP_Query رو از اون ویجت برداشتیم.

لینک به ارسال
در 40 دقیقه قبل، mehran-b گفته است :

پس در نتیجه اون ویجت ووکامرس هم که میاد محصولات رو برای شما بر اساس پر امتیاز ترین ها لیست میکنه کار نمیکنه؟

چون ما این آرگومان متد سازنده WP_Query رو از اون ویجت برداشتیم.

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

لینک به ارسال
در هم اکنون، maraljoon گفته است :

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

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

مثلا نمونه سادش رو بخوام بگم معمولا به علت اینه که بعد از پایان while هر حلقه WP_Query باید تابع wp_reset_postdata فراخوانی بشه.

<?php

$query = new WP_Query();

if($query->have_posts()) :
	while($query->have_posts()) :
		$query->the_posts();

	endwille;
	wp_reset_postdata();
endif;

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

لینک به ارسال
در 37 دقیقه قبل، mehran-b گفته است :

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

تا جایی که چک کردم این مورد رو برطرف کردم ولی همچنان اون مور سرجاشه. نمیدونم شاید تداخل با افزونه های دیگه باشه.

اون تکه کدی که باعث میشه پر امتیاز هارو نمایش بده برام، چطور میتونم تو اون لوپ استفادش کنم که فوتر با مشکل مواجه نشه؟؟

منظورم اینه:

function get_star_rating()

 همین کد باعث میشه نمایش داده بشن.

کد های فوتر هم به این صورته:

</div>            
<?php it_theme_footer(); ?>
<div id="to-top" class="bag-s"><span class="fa fa-chevron-up"></span></div>
</div>
<script>
	    jQuery( document ).ready(function( $ )
		{
		var url = window.location.href;
	    	jQuery("#sfsiid_custom").attr('href', "");
		});
	 </script>
<?php wp_footer(); ?>





</body>
</html>

 

لینک به ارسال

مثلا چطور میشه این کد رو 

function get_star_rating()

تو کد زیر استفاده کرد ؟ شدنیه؟

<!-- Carousel -->
<div id="promo-carousel" class="carousel slide" data-ride="carousel">

  <!-- Wrapper for slides -->
  <div class="carousel-inner" role="listbox">

    <?php
	
    // Item size (set here the number of posts for each group)
    $i = 4; 

    // Set the arguments for the query
   
		    $args = array(

		'post_type' => 'product',
	'posts_per_page' => 10,
	'post_status' => 'publish',
	'meta_key' => '_wc_average_rating',
	'orderby' => 'meta_value_num'
		
);


 $loop = new WP_Query( $args );

    // Get the posts
    $myposts = get_posts($args) ; 
	

    // If there are posts
    if($myposts):

      // Groups the posts in groups of $i
      $chunks = array_chunk($myposts, $i);
      $html = "";

      /*
       * Item
       * For each group (chunk) it generates an item
       */
      foreach($chunks as $chunk):
	  
        // Sets as 'active' the first item
        ($chunk === reset($chunks)) ? $active = "active" : $active = "";
        $html .= '<div class="item '.$active.'"><div class="container"><div class="row">';
  	  


        /*
         * Posts inside the current Item
         * For each item it generates the posts HTML
         */
        foreach($chunk as $post): 
          $html .= '<div class="col-xs-12 col-sm-6 col-md-3 col-lg-3">';
          $html .= get_the_title($post->ID);
		  
		  
          $html .= '</div>';
        endforeach;

        $html .= '</div></div></div>';	

      endforeach;

      // Prints the HTML
      echo $html;

    endif;
    ?>

  </div> <!-- carousel inner -->


  <!-- Controls -->
  <a class="left carousel-control" href="#promo-carousel" role="button" data-slide="prev">
    <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
    <span class="sr-only">Previous</span>
  </a>
  <a class="right carousel-control" href="#promo-carousel" role="button" data-slide="next">
    <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
    <span class="sr-only">Next</span>
  </a>

</div> <!-- /carousel -->

 

لینک به ارسال

خوب من نظرم اینه که مستقیم کوئری بزنیم به دیتابیس وردپرس ببینیم جواب می گیریم یا خیر.

 

شما تابع زیر رو بذار توی فایل functions.php قالبت.

function mehran_top_rating_title() {
	
	global $wpdb;
	
	$post_titles = $wpdb->get_results($wpdb->prepare("SELECT post_title FROM $wpdb->posts AS posts, $wpdb->postmeta AS postmeta WHERE posts.ID = postmeta.post_id AND postmeta.meta_key = %s AND posts.post_status = %s AND posts.post_type = %s ORDER BY postmeta.meta_value DESC LIMIT 10", "_wc_average_rating", "publish", "product"), ARRAY_N);
	
	foreach($post_titles as $post_title)
		$output = $post_title[0] . "<br>";
		
	return $output;
	
}

بعد توی فایل های دیگه قالب مثل سایدبار یا هر فایل دیگه غیر از functions.php این تابع رو اینطوری فراخوانی کن:

<?php echo mehran_top_rating_title(); ?>

ببین توی خروجی عنوان 10 محصول برتر رو میگیری یا خیر؟

لینک به ارسال

عذر میخوام تابع به این شکل میشه:

 

function mehran_top_rating_title() {
	
	global $wpdb;
	
	$post_titles = $wpdb->get_results($wpdb->prepare("SELECT post_title FROM $wpdb->posts AS posts, $wpdb->postmeta AS postmeta WHERE posts.ID = postmeta.post_id AND postmeta.meta_key = %s AND posts.post_status = %s AND posts.post_type = %s ORDER BY ABS(postmeta.meta_value) DESC LIMIT 10", "_wc_average_rating", "publish", "product"), ARRAY_N);

	$output = '';
	foreach($post_titles as $post_title)
		$output .= $post_title[0] . "<br>";
		
	return $output;
	
}

 

لینک به ارسال
در 24 دقیقه قبل، mehran-b گفته است :

 


function mehran_top_rating_title() {
	
	global $wpdb;
	
	$post_titles = $wpdb->get_results($wpdb->prepare("SELECT post_title FROM $wpdb->posts AS posts, $wpdb->postmeta AS postmeta WHERE posts.ID = postmeta.post_id AND postmeta.meta_key = %s AND posts.post_status = %s AND posts.post_type = %s ORDER BY ABS(postmeta.meta_value) DESC LIMIT 10", "_wc_average_rating", "publish", "product"), ARRAY_N);

	$output = '';
	foreach($post_titles as $post_title)
		$output .= $post_title[0] . "<br>";
		
	return $output;
	
}

 

این تابع چه تعداد محصول رو باید نمایش بده؟؟

لینک به ارسال
در 1 دقیقه قبل، mehran-b گفته است :

10 تا.

کدهارو جاگذاری کردم. مثل روال قبلی داره 10 تا عنوان از محصولاتی که امتیاز ندارن رو نمایش میده. البته 2 تا از ااین لیست امتیاز دارن ولی بقیه نه

لینک به ارسال

@maraljoon , @mehran-b

 

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

این کد رو تو فانکش گذاشتم:
 

function mehran_top_rating_title() {
  
  global $wpdb;
  
  $post_titles = $wpdb->get_results($wpdb->prepare("SELECT post_title FROM $wpdb->posts AS posts, $wpdb->postmeta AS postmeta WHERE posts.ID = postmeta.post_id AND postmeta.meta_key = %s AND posts.post_status = %s AND posts.post_type = %s ORDER BY ABS(postmeta.meta_value) DESC, DATE(posts.post_date) DESC LIMIT 10", "_wc_average_rating", "publish", "product"), ARRAY_N);

  $output = '';
  foreach($post_titles as $post_title)
    $output .= $post_title[0] . "<br>";
    
  return $output;
  
}

 

و این کد رو هم تو یه یه فایل گذاشتم و تست کردم تا خروجی رو چاپ کنه:

<?php echo mehran_top_rating_title(); ?>

 

 نکته ۱: محصولات شما اصلا امتیازی براشون ثبت شده؟ 

نکته ۲: دستور فراخوانی تابع رو تو یه page template جدید قرار بدید و تست بگیرید. ببینید باز هم مشکلتون پا برجاست یا نه.

 


 

لینک به ارسال
در 14 ساعت قبل، maraljoon گفته است :

کدهارو جاگذاری کردم. مثل روال قبلی داره 10 تا عنوان از محصولاتی که امتیاز ندارن رو نمایش میده. البته 2 تا از ااین لیست امتیاز دارن ولی بقیه نه

سلام مجدد

 

ما با کد آخری که تقدیمتون کردم مستقیم داریم به دیتابیس وردپرس بدون هیچ واسطه ای و اعمال هیچ هوکی کوئری میزنیم.

احتمال اینکه خروجی اشتباه باشه در حد صفر است.

نکاتی که جناب @m4xs051 فرمودن رو بررسی کنید شاید بتونید منبع مشکل رو پیدا کنید.

لینک به ارسال
در 14 ساعت قبل، m4xs051 گفته است :

 

 نکته ۱: محصولات شما اصلا امتیازی براشون ثبت شده؟ 

نکته ۲: دستور فراخوانی تابع رو تو یه page template جدید قرار بدید و تست بگیرید. ببینید باز هم مشکلتون پا برجاست یا نه.

 


 

بله. 3 محصول هست که امتیاز براشون ثبت شده

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

ویرایش شده توسط maraljoon
لینک به ارسال
در 25 دقیقه قبل، mehran-b گفته است :

سلام مجدد

 

ما با کد آخری که تقدیمتون کردم مستقیم داریم به دیتابیس وردپرس بدون هیچ واسطه ای و اعمال هیچ هوکی کوئری میزنیم.

احتمال اینکه خروجی اشتباه باشه در حد صفر است.

نکاتی که جناب @m4xs051 فرمودن رو بررسی کنید شاید بتونید منبع مشکل رو پیدا کنید.

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

لینک به ارسال
در 1 دقیقه قبل، maraljoon گفته است :

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

خوب چون خروجی 10 تا باید بده از محصول پر امتیاز شروع میشه میره تا محصول هایی که هیچ امتیازی ندارن.

ترتیب عناوین بر اساس پر امتیاز به کم امتیاز یا بی امتیاز نیست؟

لینک به ارسال
در 3 دقیقه قبل، mehran-b گفته است :

خوب چون خروجی 10 تا باید بده از محصول پر امتیاز شروع میشه میره تا محصول هایی که هیچ امتیازی ندارن.

ترتیب عناوین بر اساس پر امتیاز به کم امتیاز یا امتیاز نیست؟

تعداد محصولاتی که امتیاز داشته باشن رو بیشتر کردم. جالب اینجاست که یسری از اونارو نمایش نمیده ولی داره همراه با چند موردی که امتیاز دارن چند محصول بدون امتیاز رو هم نمایش میده.

لینک به ارسال
در 1 دقیقه قبل، maraljoon گفته است :

تعداد محصولاتی که امتیاز داشته باشن رو بیشتر کردم. جالب اینجاست که یسری از اونارو نمایش نمیده ولی داره همراه با چند موردی که امتیاز دارن چند محصول بدون امتیاز رو هم نمایش میده.

چیزی که دارید میگید جالب که چه عرض کنم شگفت انگیزه! :huh:

لینک به ارسال
در ۱ ساعت قبل، mehran-b گفته است :

چیزی که دارید میگید جالب که چه عرض کنم شگفت انگیزه! :huh:

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

 <!-- Carousel -->
<div id="promo-carousel" class="carousel slide" data-ride="carousel">

  <!-- Wrapper for slides -->
  <div class="carousel-inner" role="listbox">

    <?php
    // Item size (set here the number of posts for each group)
    $i = 4; 

    // Set the arguments for the query
    global $post; 
    $args = array(
  'post_type' => 'product',
  'posts_per_page' => 8,
  'post_status' => 'publish',
  'meta_key' => '_wc_average_rating',
  'orderby' => 'meta_value_num'
);

$query = new WP_Query($args);

    // Get the posts
    $myposts = get_posts($args);

    // If there are posts
    if($myposts):

      // Groups the posts in groups of $i
      $chunks = array_chunk($myposts, $i);
      $html = "";

      /*
       * Item
       * For each group (chunk) it generates an item
       */
      foreach($chunks as $chunk):
        // Sets as 'active' the first item
        ($chunk === reset($chunks)) ? $active = "active" : $active = "";
        $html .= '<div class="item '.$active.'"><div class="container"><div class="row">';
  
        /*
         * Posts inside the current Item
         * For each item it generates the posts HTML
         */
        foreach($chunk as $post):
          $html .= '<div class="col-xs-12 col-sm-6 col-md-3 col-lg-3">';
          $html .= get_the_post_thumbnail(); 
          $html .= get_the_title($post->ID);
      $html .= '</a>';
          $html .= '</div>';
        endforeach;

        $html .= '</div></div></div>';  

      endforeach;

      // Prints the HTML
      echo $html;

    endif;
    ?>

  </div> <!-- carousel inner -->


  <!-- Controls -->
  <a class="left carousel-control" href="#promo-carousel" role="button" data-slide="prev">
    <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
    <span class="sr-only">Previous</span>
  </a>
  <a class="right carousel-control" href="#promo-carousel" role="button" data-slide="next">
    <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
    <span class="sr-only">Next</span>
  </a>


</div> <!-- /carousel -->

 

لینک به ارسال

تصمیم گرفتم یکار دیگه انجام بدم. البته نمیدونم شدنیه یا نه.

افزونه  yith-woocommerce-advanced-reviews رو نصب کردم که با استفاده از افزونه امتیاز دهی بشه به محصولات.

حالا میخوام تست کنم meta_key امتیاز دهی مربوط به این افزونه رو پیدا کنم و توی لوپ ازش استفاده کنم شاید مشکل رفع بشه.

آیا این شدنیه؟؟ اگه شدنیه چطور متا کی مربوط به این افزونه رو پیدا کنم؟؟

لینک به ارسال

عجیبه تگ پایان لینک هست ولی تگ شروعش نیست.

 <!-- Carousel -->
<div id="promo-carousel" class="carousel slide" data-ride="carousel">

  <!-- Wrapper for slides -->
  <div class="carousel-inner" role="listbox">

    <?php
    // Item size (set here the number of posts for each group)
    $i = 4; 

    // Set the arguments for the query
    global $post; 
    $args = array(
  'post_type' => 'product',
  'posts_per_page' => 8,
  'post_status' => 'publish',
  'meta_key' => '_wc_average_rating',
  'orderby' => 'meta_value_num'
);

$query = new WP_Query($args);

    // Get the posts
    $myposts = get_posts($args);

    // If there are posts
    if($myposts):

      // Groups the posts in groups of $i
      $chunks = array_chunk($myposts, $i);
      $html = "";

      /*
       * Item
       * For each group (chunk) it generates an item
       */
      foreach($chunks as $chunk):
        // Sets as 'active' the first item
        ($chunk === reset($chunks)) ? $active = "active" : $active = "";
        $html .= '<div class="item '.$active.'"><div class="container"><div class="row">';
  
        /*
         * Posts inside the current Item
         * For each item it generates the posts HTML
         */
        foreach($chunk as $post):
          $html .= '<div class="col-xs-12 col-sm-6 col-md-3 col-lg-3">';
          $html .= '<a href="'.get_permalink($post->ID).'">';
          $html .= get_the_post_thumbnail($post->ID); 
          $html .= get_the_title($post->ID);
          $html .= '</a>';
          $html .= '</div>';
        endforeach;

        $html .= '</div></div></div>';  

      endforeach;

      // Prints the HTML
      echo $html;

    endif;
    ?>

  </div> <!-- carousel inner -->


  <!-- Controls -->
  <a class="left carousel-control" href="#promo-carousel" role="button" data-slide="prev">
    <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
    <span class="sr-only">Previous</span>
  </a>
  <a class="right carousel-control" href="#promo-carousel" role="button" data-slide="next">
    <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
    <span class="sr-only">Next</span>
  </a>


</div> <!-- /carousel -->

 

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...