Свой виджет с выводом записей на WordPress

В functions.php

class ar_post_widget extends WP_Widget {

	public function __construct() {
		parent::__construct(
			'ar_post_widget',
			'Вывод записей',
			array( 'description' => 'Вывод записей по ид' )
		);
	}

	// это то, что увидит пользователь
	public function widget( $args, $instance )
	{

		extract( $args );
		$title = apply_filters( 'widget_title', $instance['title'] );

		echo $before_widget;
		if ( ! empty( $title ) )
			echo $before_title . $title . $after_title; ?>

<?php 
$ar_post_id_arr=explode(",",$instance['ar_post_id']);
$news = new WP_query(); $news->query( array('post__in' => $ar_post_id_arr)); ?>
<?php while ($news->have_posts()) : $news->the_post(); ?>

                <div class="media">
                  <div class="media-left">
			<?php echo raft_post_img_wp($post->ID, 1, 1, 'media-object img70'); ?>
                  </div>
                  <div class="media-body">
                    <h4 class="media-heading"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h4>
                    <div class="text">
                      <?php if(function_exists('the_ratings')) { echo the_ratings_results(get_the_id()); } ?>
                    </div>
                  </div>
                  <hr/>
                </div>

<?php endwhile; ?>

		<?php echo $after_widget;

	}

	// обновление параметров в админке
	public function update( $new_instance, $old_instance )
	{
		$instance = array();
		// если надо чтобы удалялись теги при сохранении, используй strip_tags
		$instance['title'] = strip_tags( $new_instance['title'] );
		$instance['ar_post_id'] = strip_tags( $new_instance['ar_post_id'] );	
		return $instance;
	}

	// форма с полями ввода настроек виджета в админке
	public function form( $instance )
	{
		$title = isset( $instance[ 'title' ] )  ? $instance[ 'title' ] : 'Топ записей';
		$ar_post_id = isset( $instance[ 'ar_post_id' ] )  ? $instance[ 'ar_post_id' ] : '1';
		?>
		<p>
			<label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Заголовок:' ); ?></label>
			<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( $title ); ?>" 
				/>
		</p>
		<p>
			<label for="<?php echo $this->get_field_id( 'ar_post_id' ); ?>"><?php _e( 'Ид записей:' ); ?></label>
			<input 
				class="widefat" id="<?php echo $this->get_field_id( 'ar_post_id' ); ?>" 
				name="<?php echo $this->get_field_name( 'ar_post_id' ); ?>" 
				type="text" 
				value="<?php echo esc_attr( $ar_post_id ); ?>" 
				/>
		</p>
		<?php
	}
}
add_action( 'widgets_init', create_function( '', 'register_widget( "ar_post_widget" );' ) );

 

Запись опубликована в рубрике WordPress с метками , . Добавьте в закладки постоянную ссылку.

Один комментарий: Свой виджет с выводом записей на WordPress

  1. Привет! Так ответить очень сложно, вывод постов по 1 строке или по несколько — это все зависит от верстки каждой отдельной темы оформления.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *