Last active
August 18, 2017 11:45
-
-
Save petrozavodsky/fbf386e1647f5dea2365b16c60ef3c4a to your computer and use it in GitHub Desktop.
тестовое
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
Plugin Name: Post_Widget | |
Plugin URI: http://# | |
Description: Плагин создает виджет позволяющий вывести 10 последних записей и отсортировать их | |
Version: 1.0 | |
Author: Капанов Е.А. | |
Author URI: http://# | |
*/ | |
add_action('widgets_init', 'Post_Widget'); | |
function Post_Widget(){ | |
register_widget('post_widget'); | |
} | |
class post_widget extends WP_Widget{ | |
public function __construct() { | |
$args = array( | |
//но он обычно выводит больше | |
'description' => __( 'Вывод 10 последних постов с фильтрацией по произвольному полю.', 'text_domain' ), | |
'name'=> 'Избранные публикации'); | |
parent::__construct('post_widget', '', $args); | |
} | |
public function update( $new_instance, $old_instance ) { | |
$instance = array(); | |
$instance['title'] = strip_tags( $new_instance['title']); | |
return $instance; | |
} | |
public function form( $instance ) { | |
?> | |
<p> | |
<label for="<?php echo $this->get_field_id( 'title' ); ?>">Заголовок:<p></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 $instance['title']; ?>" /> | |
</p> | |
<?php | |
} | |
public function widget( $args, $instance ) { | |
?> | |
<div style='border:2px dotted #42e8f4; | |
border-radius: 5px; | |
text-align:center ; | |
padding:20px;'> | |
<?php echo "<b>". $instance['title'],':',"</b>"."<p>"; | |
/* | |
* зачем два цикла когда можно обойтись одним | |
* */ | |
$args = array( | |
'post_type' => 'post', | |
'posts_per_page' => 10, | |
//опечатка ' meta_value_num' | |
'orderby' => 'meta_value_num' , | |
'meta_key' => 'ORDER', | |
'order' =>'asc' | |
); | |
$args2 = array( | |
'post_type' => 'post', | |
'posts_per_page' => 10, | |
'orderby' => 'title', | |
'order' =>'asc' | |
); | |
/* | |
* два цикла постов в итоге 10 + количестов постов с полем order, во втором цикле выводятся в том числе поля | |
* с существующим order это совсем не то | |
*/ | |
$query = new WP_Query( $args ); | |
if ( $query->have_posts() ) { | |
while ( $query->have_posts() ) { | |
$query->the_post(); | |
if((get_post_meta(get_the_ID(),'ORDER',true)) != null){ | |
// элемент li не используется без ul / ol - невалидный html | |
echo '<li>'.get_the_title(), " - " ,get_post_meta(get_the_ID(),'ORDER',true), '</li>'; | |
} | |
else | |
echo '<li>' . get_the_title(), " - Не задано", '</li>'; | |
} | |
} | |
//зачем нет смысла в этой ветке | |
else { | |
} | |
wp_reset_postdata(); | |
$query2 = new WP_Query($args2); | |
if ( $query2->have_posts() ) { | |
while ($query2->have_posts()) { | |
$query2->the_post(); | |
if ((get_post_meta(get_the_ID(), 'ORDER', true)) == null) { | |
echo '<li>' . get_the_title(), " - Не задано", '</li>'; | |
} | |
} | |
} | |
//если уж ты решил прогнать два цикла где второй вызов wp_reset_postdata() | |
?> | |
</div> | |
<?php | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment