ابزارک نمایش نوشته‌ها براساس دسته‌بندی وردپرس

ابزارک نمایش نوشته‌ها براساس دسته‌بندی وردپرس

Want create site? Find Free WordPress Themes and plugins.

حتما وب ‌سایت‌هایی را دیده‌اید که آخرین مطالب هر دسته را به صورت تفکیک شده در سایدبار خود نمایش می‌دهند. در این مطلب از حلقه وردپرس قصد داریم روش ساخت ابزارک نمایش مطالب براساس دسته‌بندی را به شما آموزش  دهیم. ساخت این ابزارک بسیار راحت بوده و پس از آن قادر خواهید بود که این ابزارک را در هر موقعیتی که ویژگی ابزارک‌ها وجود دارد، قرار دهید. علاوه‌براین با داشتن اندک دانشی از کدهای css می‌توانید فرم و استایل قالب را متناسب با قالب خود تنظیم کنید. با ما همراه باشید…

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

در ابتدا لازم است، نام و مشخصات ابزارک را به قالب خود معرفی کنید. بنابراین کد زیر را به فایل فانکشن(functions.php) خود اضافه کنید:

class CategoryPosts extends WP_Widget {

function CategoryPosts() {
$widget_ops = array('classname' => 'cat-post-widget', 'description' => __('نمایش نوشته های مربوط به یک دسته ')); // توضیحات ابزارک
$this->WP_Widget('category-posts', __('نمایش نوشته‌ها براساس دسته بندی'), $widget_ops); // نام ابزارک
}


بعد از این باید تابعی را به وردپرس معرفی کنیم که مطالب یک دسته را برای ما پیدا کند. برای این کار کد زیر را نیز به فایل فانکشن اضافه می‌کنیم:

function widget($args, $instance) {
global $post;
$post_old = $post; // ذخیره مطلب

extract( $args );

$sizes = get_option('mkrdip_cat_post_thumb_sizes');

// اگر عنوان وارد نشده باشد از نام دسته استفاده می‌شود
if( !$instance["title"] ) {
$category_info = get_category($instance["cat"]);
$instance["title"] = $category_info->name;
}

$valid_sort_orders = array('date', 'title', 'comment_count', 'rand');
if ( in_array($instance['sort_by'], $valid_sort_orders) ) {
$sort_by = $instance['sort_by'];
$sort_order = (bool) isset( $instance['asc_sort_order'] ) ? 'ASC' : 'DESC';
} else {
// بخش زیر برای مرتب کردن مطالب است که در اینجا براساس تاریخ و به صورت نزولی تعیین شده است
$sort_by = 'date';
$sort_order = 'DESC';
}

// آرایه ای از اطلاعات مطالب را بر می گرداند
$cat_posts = new WP_Query(
"showposts=" . $instance["num"] .
"&cat=" . $instance["cat"] .
"&orderby=" . $sort_by .
"&order=" . $sort_order
);

// تعیین تعداد حروف توظیحات هر پست
$new_excerpt_length = create_function('$length', "return " . $instance["excerpt_length"] . ";");
if ( $instance["excerpt_length"] > 0 )
add_filter('excerpt_length', $new_excerpt_length);

echo $before_widget;

// عنوان ابزارک
echo $before_title;
if( isset( $instance["title_link"] ) )
echo '<a href="' . get_category_link($instance["cat"]) . '">' . $instance["title"] . '</a>';
else
echo $instance["title"];
echo $after_title;

// لیست مطالب
echo "<ul>\n";

while ( $cat_posts->have_posts() )
{
$cat_posts->the_post();
?>
<li class="cat-post-item">
<a class="post-title" href="<?php the_permalink(); ?>" rel="bookmark" title="Permanent link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a>

<?php if ( isset( $instance['date'] ) ) : ?>
<p class="post-date"><?php the_time("j M Y"); ?></p>
<?php endif; ?>

<?php
if (
function_exists('the_post_thumbnail') &&
current_theme_supports("post-thumbnails") &&
isset( $instance["thumb"] ) &&
has_post_thumbnail()
) :
?>
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
<?php the_post_thumbnail( 'cat_post_thumb_size'.$this->id ); ?>
</a>
<?php endif; ?>

<?php if ( isset( $instance['excerpt'] ) ) : ?>
<?php the_excerpt(); ?>
<?php endif; ?>

<?php if ( isset( $instance['comment_num'] ) ) : ?>
<p class="comment-num">(<?php comments_number(); ?>)</p>
<?php endif; ?>
</li>
<?php
}

echo "</ul>\n";

echo $after_widget;

remove_filter('excerpt_length', $new_excerpt_length);

wp_reset_postdata();

}

function update($new_instance, $old_instance) {
$sizes = get_option('mkrdip_cat_post_thumb_sizes');

if ( !$sizes ) {
$sizes = array();
}

$sizes[$this->id] = array($new_instance['thumb_w'], $new_instance['thumb_h']);
update_option('mkrdip_cat_post_thumb_sizes', $sizes);

return $new_instance;
}


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

function form($instance) {
$instance = wp_parse_args( ( array ) $instance, array(
'title' => __( '' ),
'cat' => __( '' ),
'num' => __( '' ),
'sort_by' => __( '' ),
'asc_sort_order' => __( '' ),
'title_link' => __( '' ),
'excerpt' => __( '' ),
'excerpt_length' => __( '' ),
'comment_num' => __( '' ),
'date' => __( '' ),
'thumb' => __( '' ),
'thumb_w' => __( '' ),
'thumb_h' => __( '' )
) );

$title = $instance['title'];
$cat = $instance['cat'];
$num = $instance['num'];
$sort_by = $instance['sort_by'];
$asc_sort_order = $instance['asc_sort_order'];
$title_link = $instance['title_link'];
$excerpt = $instance['excerpt'];
$excerpt_length = $instance['excerpt_length'];
$comment_num = $instance['comment_num'];
$date = $instance['date'];
$thumb = $instance['thumb'];
$thumb_w = $instance['thumb_w'];
$thumb_h = $instance['thumb_h'];

?>
<p>
<label for="<?php echo $this->get_field_id("title"); ?>">
<?php _e( 'عنوان' ); ?>:
<input class="widefat" id="<?php echo $this->get_field_id("title"); ?>" name="<?php echo $this->get_field_name("title"); ?>" type="text" value="<?php echo esc_attr($instance["title"]); ?>" />
</label>
</p>

<p>
<label>
<?php _e( 'دسته بندی' ); ?>:
<?php wp_dropdown_categories( array( 'name' => $this->get_field_name("cat"), 'selected' => $instance["cat"] ) ); ?>
</label>
</p>

<p>
<label for="<?php echo $this->get_field_id("num"); ?>">
<?php _e('تعداد مطالب برای نمایش'); ?>:
<input style="text-align: center;" id="<?php echo $this->get_field_id("num"); ?>" name="<?php echo $this->get_field_name("num"); ?>" type="text" value="<?php echo absint($instance["num"]); ?>" size='3' />
</label>
</p>

<p>
<label for="<?php echo $this->get_field_id("excerpt"); ?>">
<input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id("excerpt"); ?>" name="<?php echo $this->get_field_name("excerpt"); ?>"<?php checked( (bool) $instance["excerpt"], true ); ?> />
<?php _e( 'نمایش چکیده مطالب' ); ?>
</label>
</p>

<p>
<label for="<?php echo $this->get_field_id("excerpt_length"); ?>">
<?php _e( 'طول چکیده:' ); ?>
</label>
<input style="text-align: center;" type="text" id="<?php echo $this->get_field_id("excerpt_length"); ?>" name="<?php echo $this->get_field_name("excerpt_length"); ?>" value="<?php echo $instance["excerpt_length"]; ?>" size="3" />
</p>

<p>
<label for="<?php echo $this->get_field_id("comment_num"); ?>">
<input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id("comment_num"); ?>" name="<?php echo $this->get_field_name("comment_num"); ?>"<?php checked( (bool) $instance["comment_num"], true ); ?> />
<?php _e( 'نمایش تعداد دیدگاه ها' ); ?>
</label>
</p>

<p>
<label for="<?php echo $this->get_field_id("date"); ?>">
<input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id("date"); ?>" name="<?php echo $this->get_field_name("date"); ?>"<?php checked( (bool) $instance["date"], true ); ?> />
<?php _e( 'نمایش تاریخ مطلب' ); ?>
</label>
</p>

<?php if ( function_exists('the_post_thumbnail') && current_theme_supports("post-thumbnails") ) : ?>
<p>
<label for="<?php echo $this->get_field_id("thumb"); ?>">
<input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id("thumb"); ?>" name="<?php echo $this->get_field_name("thumb"); ?>"<?php checked( (bool) $instance["thumb"], true ); ?> />
<?php _e( 'نمایش تصویر شاخص' ); ?>
</label>
</p>
<p>
<label>
<?php _e('اندازه تصویر شاخص'); ?>:<br />
<label for="<?php echo $this->get_field_id("thumb_w"); ?>">
عرض: <input class="widefat" style="width:30%;" type="text" id="<?php echo $this->get_field_id("thumb_w"); ?>" name="<?php echo $this->get_field_name("thumb_w"); ?>" value="<?php echo $instance["thumb_w"]; ?>" />
</label>

<label for="<?php echo $this->get_field_id("thumb_h"); ?>">
ارتفاع: <input class="widefat" style="width:30%;" type="text" id="<?php echo $this->get_field_id("thumb_h"); ?>" name="<?php echo $this->get_field_name("thumb_h"); ?>" value="<?php echo $instance["thumb_h"]; ?>" />
</label>
</label>
</p>
<?php endif; ?>

<?php

}

}

add_action( 'widgets_init', create_function('', 'return register_widget("CategoryPosts");') );


تغییرات را ذخیره کنید و از طریق بخش ابزارک‌ها اقدام به تست آن کنید. علاوه براین به چند کد نویسی ساده css قادر خواهید بود ساختار ابزارک را با قالب خود تناسب دهید. آموزش مربوط به ساخت ابزارک نمایش نوشته‌ها براساس دسته‌بندی وردپرس  در همین‌جا به پایان می‌رسد. امیدوارم این مطلب در بهبود سایت شما موثر بوده باشد.

موفق باشید…

Did you find apk for android? You can find new Free Android Games and apps.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *