ارزدیجیتال
حراجی دامنه های ویژهمشاهده





پلتفرم رپورتاژ آگهی و بک لینک تسمینو
تبلیغات
تبلیغات تبلیغات
تبلیغات ژاکت, مرجع خرید قالب و افزونه وردپرسی اورجینال

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

وردپرس , مقالات,آموزش,ترفند

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

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

این مقاله چقدر براتون مفید بود؟

از ۱ تا ۵ امتیاز بدید.

میانگین رتبه 0 / 5. تعداد رای : 0

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

دانلود

هاست ارزان، لایت اسپید، سرور مجازی منطبق با اسکریپت های 20script کلیک کنید >

خرید ارز
مطلب مفیدی بود ؟
نویسنده : تیم محتوای 20اسکریپت 0 وردپرس , مقالات,آموزش,ترفند
لینک کوتاه مطلب : https://www.20script.ir/?p=48678
کلمات کلیدی پست :
مطالب مرتبط
6,1605 روش آسان برای جلوگیری از سرقت پهنای باند در وردپرس تاریخ : 2019/10/23
7,496افزودن انجمن BBPress به عنوان کامنت در پست ها تاریخ : 2018/11/3
24,542دانلود قالب تک صفحه ای Brooklyn برای وردپرس تاریخ : 2015/05/21
11,087افزونه ووکامرسی امتیاز و پاداش مشتریان Points And Rewards نسخه 1.5.3 تاریخ : 2016/01/6
10,037دانلود قالب بارسلونا برای وردپرس تاریخ : 2016/07/13
6,824آموزش مدیریت شکلک ها در وردپرس تاریخ : 2020/02/6
6,884DNSSEC چیست و چطور از آن استفاده کنیم؟ تاریخ : 2020/02/11
6,868آموزش رفع خطای This site ahead contains harmful programs تاریخ : 2019/04/9
6,080وردپرس یا Medium؟ کدام یک بهتر است؟ تاریخ : 2019/11/7
6,144افزودن صفت Title به منوهای وردپرس تاریخ : 2019/03/15
7,812چرا باید رسانه های وردپرس را noindex کنیم؟ تاریخ : 2019/09/4
24,685افزونه وردپرس چندزبانه کردن وب سایت GTranslate تاریخ : 2017/04/18
برخی از قالب های وبلاگ - بیست اسکریپت
قالب عشق بین انگشت هاقالب عشق بین انگشت ها
قالب دخترونه و آرایشقالب دخترونه و آرایش
قالب زیبای ماشینقالب زیبای ماشین
قالب فانتزی و طنز چِشمقالب فانتزی و طنز چِشم
قالب دختر رویاییقالب دختر رویایی
قالب وبلاگ دکوراسیونقالب وبلاگ دکوراسیون
قالب وبلاگ کلبه و درختقالب وبلاگ کلبه و درخت
قالب دختر زیباقالب دختر زیبا
قالب پسرونه غمگینقالب پسرونه غمگین
قالب عاشقانه قلبقالب عاشقانه قلب
بیست اسکریپت
اسکریپت
profile
sourceforge
profile webmaster
profile check
checker list
checker
checker
upload file