رفتن به مطلب

تغییر فانکشن محبوبترین مطالب


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

من فانکشن محبوبترین مطالب رو دارم میخوام دو تا امکان بهش اضافه بشه یکی این که بهش بگم از کدوم دسته مطالب رو بیاره یکی اینکه محدود به زمان باشه مثلا مطالب هفته جاری و یا ماه جاری اگر هم به صورت هفته جاری یا ماه جاری نمیشه به صورت مطالب یه هفته پیش(مطالب تا هفت روز پیش) و مطالب یه ماه پیش( مطالب تا سی روز پیش)

اینم کد :


function popularPosts($num) {

global $wpdb;

$posts = $wpdb->get_results("SELECT comment_count, ID, post_title FROM $wpdb->posts ORDER BY comment_count DESC LIMIT 0 , $num ");

foreach ($posts as $post) {
setup_postdata($post);
$id = $post->ID;
$title = $post->post_title;
$count = $post->comment_count;

if ($count != 0) {
$popular .= '


<table style="height:20px; border-bottom:1px solid #ccc; line-height:2em;">

<td style="width:440px;">


';
$popular .= '<a href="' . get_permalink($id) . '" title="' . $title . '">' . $title . '</a> ';
$popular .= '



</td>
</table>





';

}
}
return $popular;
}

البته مقدار cat به این صورت وارد بشه چون از یه جای دیگه مقدارشو میگیرم >>'.cat='.$iman

ویرایش شده توسط ssll
لینک به ارسال

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


function tie_last_posts_cattb($numberOfPosts = 5 , $thumb = true , $cats = 1){
global $post;
$orig_post = $post;
$lastPosts = get_posts('category='.$cats.'&numberposts='.$numberOfPosts.'& orderby=comment_count&order=DESC');
foreach($lastPosts as $post): setup_postdata($post);
?>
<li <?php tie_post_class(); ?>>
<?php if ( function_exists("has_post_thumbnail") && has_post_thumbnail() && $thumb ) : ?>
<div class="post-thumbnail">
<a href="<?php the_permalink(); ?>" title="<?php printf( __( 'Permalink to %s', 'tie' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php tie_thumb(); ?><span class="overlay-icon"></span></a>
</div><!-- post-thumbnail /-->
<?php endif; ?>
<h3><a href="<?php the_permalink(); ?>"><?php the_title();?></a></h3>
<?php tie_get_score(); ?> <span class="date"><?php the_time('d F Y'); ?></span>
</li>
<?php endforeach;
$post = $orig_post;
}

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

لینک به ارسال

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


function tie_last_posts_cattb($numberOfPosts = 5 , $thumb = true , $cats = 1){
//add_filter( 'posts_where', 'filter_where_today' );
$today = getdate();

$args=array(

'date_query' => array(
array(
'year' => $today["year"],
'month' => $today["mon"],
'day' => $today["mday"],
),
),

'cat'=>$cats,
'posts_per_page'=>$numberOfPosts,
'orderby'=>'comment_count',
'order'=>'DESC'
);
$lastPosts =new WP_Query($args);
//remove_filter( 'posts_where', 'filter_where_today' );
while($lastPosts->have_posts()):$lastPosts->the_post(); ?>
<li <?php tie_post_class(); ?>>
<?php if ( function_exists("has_post_thumbnail") && has_post_thumbnail() && $thumb ) : ?>
<div class="post-thumbnail">
<a href="<?php the_permalink(); ?>" title="<?php printf( __( 'Permalink to %s', 'tie' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php tie_thumb(); ?><span class="overlay-icon"></span></a>
</div><!-- post-thumbnail /-->
<?php endif; ?>
<h3><a href="<?php the_permalink(); ?>"><?php the_title();?></a></h3>
<?php tie_get_score(); ?> <span class="date"><?php the_time('d F Y'); ?></span>
</li>
<?php endwhile;
$post = $orig_post;
}

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

گزینه ها در ابزارک هم به این شرح می باشند


<p>
<label for="<?php echo $this->get_field_id( 'posts_orderr' ); ?>">نوع زمان : </label>
<select id="<?php echo $this->get_field_id( 'posts_orderr' ); ?>" name="<?php echo $this->get_field_name( 'posts_orderr' ); ?>" >
<option value="latestt" <?php if( $instance['posts_orderr'] == 'latestt' ) echo "selected=\"selected\""; else echo ""; ?>>ماه </option>
<option value="randomm" <?php if( $instance['posts_orderr'] == 'randomm' ) echo "selected=\"selected\""; else echo ""; ?>>هفته</option>
<option value="popularr" <?php if( $instance['posts_orderr'] == 'popularr' ) echo "selected=\"selected\""; else echo ""; ?>>24 ساعت</option>
<option value="bestt" <?php if( $instance['posts_orderr'] == 'bestt' ) echo "selected=\"selected\""; else echo ""; ?>>همه زمان ها</option>
</select>
</p>

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

post-3832-0-63276800-1391851305_thumb.pn

لینک به ارسال

اول کد صفحه تنظیماتتون رو با مقادیر مرتبط اصلاح کنید


<label for="<?php echo $this->get_field_id( 'posts_orderr' ); ?>">نوع زمان : </label>
<select id="<?php echo $this->get_field_id( 'posts_orderr' ); ?>" name="<?php echo $this->get_field_name( 'posts_orderr' ); ?>" >
<option value="mounth" <?php if( $instance['posts_orderr'] == 'mounth' ) echo "selected=\"selected\""; else echo ""; ?>>ماه </option>
<option value="week" <?php if( $instance['posts_orderr'] == 'week' ) echo "selected=\"selected\""; else echo ""; ?>>هفته</option>
<option value="day" <?php if( $instance['posts_orderr'] == 'day' ) echo "selected=\"selected\""; else echo ""; ?>>24 ساعت</option>
<option value="all" <?php if( $instance['posts_orderr'] == 'all' ) echo "selected=\"selected\""; else echo ""; ?>>همه زمان ها</option>
</select>

و بعد شرط بگذارید


<?php
$posts_orderr =get_option('posts_orderr');
if($posts_orderr == 'mounth') {
//کدهای کوئری ماهیانه
}
elseif($posts_orderr == 'week') {
// کدهای کوئری هفتگی
}
?>

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

لینک به ارسال

این کد مگر محدوده زمانی امروز( یا 24 ساعت ) نیست؟ :


'date_query' => array(
array(
'year' => $today["year"],
'month' => $today["mon"],
'day' => $today["mday"],
),
),

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


function tie_last_posts_cattb($numberOfPosts = 5 , $thumb = true , $cats = 1){
//add_filter( 'posts_where', 'filter_where_today' );
$today = getdate();
<?php
$posts_orderr =get_option('posts_orderr');
if($posts_orderr == 'day') {
$args=array(
'date_query' => array(
array(
'year' => $today["year"],
'month' => $today["mon"],
'day' => $today["mday"],
),
),
}
?>
'cat'=>$cats,
'posts_per_page'=>$numberOfPosts,
'orderby'=>'comment_count',
'order'=>'DESC'
);
$lastPosts =new WP_Query($args);
//remove_filter( 'posts_where', 'filter_where_today' );
while($lastPosts->have_posts()):$lastPosts->the_post(); ?>
<li <?php tie_post_class(); ?>>
<?php if ( function_exists("has_post_thumbnail") && has_post_thumbnail() && $thumb ) : ?>
<div class="post-thumbnail">
<a href="<?php the_permalink(); ?>" title="<?php printf( __( 'Permalink to %s', 'tie' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php tie_thumb(); ?><span class="overlay-icon"></span></a>
</div><!-- post-thumbnail /-->
<?php endif; ?>
<h3><a href="<?php the_permalink(); ?>"><?php the_title();?></a></h3>
<?php tie_get_score(); ?> <span class="date"><?php the_time('d F Y'); ?></span>
</li>
<?php endwhile;
$post = $orig_post;
}

لینک به ارسال

مطالب روز هست ولی مطالب محبوب روز نه پر دیدگاه ترین مطالبی که امروز منتشر شده اند


<?php
function tie_last_posts_cattb($numberOfPosts = 5 , $thumb = true , $cats = 1){
//add_filter( 'posts_where', 'filter_where_today' );
$today = getdate();
$posts_orderr =get_option('posts_orderr');
$day=array(
'date_query' => array(
array(
'year' => $today["year"],
'month' => $today["mon"],
'day' => $today["mday"],
),
),
'cat'=>$cats,
'posts_per_page'=>$numberOfPosts,
'orderby'=>'comment_count',
'order'=>'DESC'
);
$month=array(
'date_query' => array(
array(
'year' => $today["year"],
'month' => $today["mon"],
),
),
'cat'=>$cats,
'posts_per_page'=>$numberOfPosts,
'orderby'=>'comment_count',
'order'=>'DESC'
);
if($posts_orderr == 'month') {
$lastPosts =new WP_Query($month);
}
else {
$lastPosts =new WP_Query($day);
}
//remove_filter( 'posts_where', 'filter_where_today' );
while($lastPosts->have_posts()):$lastPosts->the_post(); ?>
<li <?php tie_post_class(); ?>>
<?php if ( function_exists("has_post_thumbnail") && has_post_thumbnail() && $thumb ) : ?>
<div class="post-thumbnail">
<a href="<?php the_permalink(); ?>" title="<?php printf( __( 'Permalink to %s', 'tie' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php tie_thumb(); ?><span class="overlay-icon"></span></a>
</div><!-- post-thumbnail /-->
<?php endif; ?>
<h3><a href="<?php the_permalink(); ?>"><?php the_title();?></a></h3>
<?php tie_get_score(); ?> <span class="date"><?php the_time('d F Y'); ?></span>
</li>
<?php endwhile;
$post = $orig_post;
} ?>

لینک به ارسال

هم ماه رو زدم هم روز ولی فقط مطالب محبوب(پردیدگاه) همون روز رو می اورد گویا شرط کار نمیکرد

ویرایش شده توسط ssll
لینک به ارسال

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


<option value="month" <?php if( $instance['posts_orderr'] == 'month' ) echo "selected=\"selected\""; else echo ""; ?>>ماه </option>

لینک به ارسال

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

در کل من این کد را توصیه نمی کنم در نهایت هم که ارابشه کوئری خیلی سنگینی می سازه که قابل استفاده نخواهد بود بهتره این آموزش را مرور کنید

http://forum.wp-parsi.com/tutorials/article/138-%D9%BE%D8%B1%D8%A8%D8%A7%D8%B2%D8%AF%DB%8C%D8%AF-%D8%AA%D8%B1%DB%8C%D9%86-%D9%85%D8%B7%D8%A7%D9%84%D8%A8/

لینک به ارسال

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

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

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

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

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

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

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

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

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