ssll

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

11 پست در این موضوع قرار دارد

ارسال شده در (ویرایش شده)

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

اینم کد :


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
0

به اشتراک گذاری این پست


لینک به پست

با این کد امکانش نیست

2

به اشتراک گذاری این پست


لینک به پست

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


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 رو وارد کردم . منتها الان میخوام محدود به زمانش یعنی مطالب هفته یا مطالب ماه کنم . هر چه کد در مورد محدوده زمانی بود تست کردم نشد شاید تو جا گذاری اشتباه بوده.

0

به اشتراک گذاری این پست


لینک به پست

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


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

0

به اشتراک گذاری این پست


لینک به پست

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


<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') {
// کدهای کوئری هفتگی
}
?>

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

2

به اشتراک گذاری این پست


لینک به پست

این کد مگر محدوده زمانی امروز( یا 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;
}

0

به اشتراک گذاری این پست


لینک به پست

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


<?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;
} ?>

3

به اشتراک گذاری این پست


لینک به پست

ارسال شده در (ویرایش شده)

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

ویرایش شده در توسط ssll
0

به اشتراک گذاری این پست


لینک به پست

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


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

1

به اشتراک گذاری این پست


لینک به پست

بازم کار نکرد:(

0

به اشتراک گذاری این پست


لینک به پست

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

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

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/

1

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

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


ورود به حساب کاربری