Skip to content

Instantly share code, notes, and snippets.

@petrozavodsky
Last active August 18, 2017 11:45
Show Gist options
  • Save petrozavodsky/fbf386e1647f5dea2365b16c60ef3c4a to your computer and use it in GitHub Desktop.
Save petrozavodsky/fbf386e1647f5dea2365b16c60ef3c4a to your computer and use it in GitHub Desktop.
тестовое
<?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