Вход Регистрация
Файл: wordpress/wp-content/themes/twentyfourteen/inc/widgets.php
Строк: 371
<?php
/**
 * Custom Widget for displaying specific post formats
 *
 * Displays posts from Aside, Quote, Video, Audio, Image, Gallery, and Link formats.
 *
 * @link https://codex.wordpress.org/Widgets_API#Developing_Widgets
 *
 * @package WordPress
 * @subpackage Twenty_Fourteen
 * @since Twenty Fourteen 1.0
 */

class Twenty_Fourteen_Ephemera_Widget extends WP_Widget {

    
/**
     * The supported post formats.
     *
     * @access private
     * @since Twenty Fourteen 1.0
     *
     * @var array
     */
    
private $formats = array( 'aside''image''video''audio''quote''link''gallery' );

    
/**
     * Constructor.
     *
     * @since Twenty Fourteen 1.0
     *
     * @return Twenty_Fourteen_Ephemera_Widget
     */
    
public function __construct() {
        
parent::__construct'widget_twentyfourteen_ephemera'__'Twenty Fourteen Ephemera''twentyfourteen' ), array(
            
'classname'   => 'widget_twentyfourteen_ephemera',
            
'description' => __'Use this widget to list your recent Aside, Quote, Video, Audio, Image, Gallery, and Link posts.''twentyfourteen' ),
        ) );
    }

    
/**
     * Output the HTML for this widget.
     *
     * @access public
     * @since Twenty Fourteen 1.0
     *
     * @param array $args     An array of standard parameters for widgets in this theme.
     * @param array $instance An array of settings for this widget instance.
     */
    
public function widget$args$instance ) {
        
$format = isset( $instance['format'] ) && in_array$instance['format'], $this->formats ) ? $instance['format'] : 'aside';

        switch ( 
$format ) {
            case 
'image':
                
$format_string      __'Images''twentyfourteen' );
                
$format_string_more __'More images''twentyfourteen' );
                break;
            case 
'video':
                
$format_string      __'Videos''twentyfourteen' );
                
$format_string_more __'More videos''twentyfourteen' );
                break;
            case 
'audio':
                
$format_string      __'Audio''twentyfourteen' );
                
$format_string_more __'More audio''twentyfourteen' );
                break;
            case 
'quote':
                
$format_string      __'Quotes''twentyfourteen' );
                
$format_string_more __'More quotes''twentyfourteen' );
                break;
            case 
'link':
                
$format_string      __'Links''twentyfourteen' );
                
$format_string_more __'More links''twentyfourteen' );
                break;
            case 
'gallery':
                
$format_string      __'Galleries''twentyfourteen' );
                
$format_string_more __'More galleries''twentyfourteen' );
                break;
            case 
'aside':
            default:
                
$format_string      __'Asides''twentyfourteen' );
                
$format_string_more __'More asides''twentyfourteen' );
                break;
        }

        
$number = empty( $instance['number'] ) ? absint$instance['number'] );
        
$title  apply_filters'widget_title', empty( $instance['title'] ) ? $format_string $instance['title'], $instance$this->id_base );

        
$ephemera = new WP_Query( array(
            
'order'          => 'DESC',
            
'posts_per_page' => $number,
            
'no_found_rows'  => true,
            
'post_status'    => 'publish',
            
'post__not_in'   => get_option'sticky_posts' ),
            
'tax_query'      => array(
                array(
                    
'taxonomy' => 'post_format',
                    
'terms'    => array( "post-format-$format),
                    
'field'    => 'slug',
                    
'operator' => 'IN',
                ),
            ),
        ) );

        if ( 
$ephemera->have_posts() ) :
            
$tmp_content_width $GLOBALS['content_width'];
            
$GLOBALS['content_width'] = 306;

            echo 
$args['before_widget'];
            
?>
            <h1 class="widget-title <?php echo esc_attr$format ); ?>">
                <a class="entry-format" href="<?php echo esc_urlget_post_format_link$format ) ); ?>"><?php echo esc_html$title ); ?></a>
            </h1>
            <ol>

                <?php
                    
while ( $ephemera->have_posts() ) :
                        
$ephemera->the_post();
                        
$tmp_more $GLOBALS['more'];
                        
$GLOBALS['more'] = 0;
                
?>
                <li>
                <article <?php post_class(); ?>>
                    <div class="entry-content">
                        <?php
                            
if ( has_post_format'gallery' ) ) :

                                if ( 
post_password_required() ) :
                                    
the_content__'Continue reading <span class="meta-nav">&rarr;</span>''twentyfourteen' ) );
                                else :
                                    
$images = array();

                                    
$galleries get_post_galleriesget_the_ID(), false );
                                    if ( isset( 
$galleries[0]['ids'] ) )
                                        
$images explode','$galleries[0]['ids'] );

                                    if ( ! 
$images ) :
                                        
$images get_posts( array(
                                            
'fields'         => 'ids',
                                            
'numberposts'    => -1,
                                            
'order'          => 'ASC',
                                            
'orderby'        => 'menu_order',
                                            
'post_mime_type' => 'image',
                                            
'post_parent'    => get_the_ID(),
                                            
'post_type'      => 'attachment',
                                        ) );
                                    endif;

                                    
$total_images count$images );

                                    if ( 
has_post_thumbnail() ) :
                                        
$post_thumbnail get_the_post_thumbnail();
                                    elseif ( 
$total_images ) :
                                        
$image          reset$images );
                                        
$post_thumbnail wp_get_attachment_image$image'post-thumbnail' );
                                    endif;

                                    if ( ! empty ( 
$post_thumbnail ) ) :
                        
?>
                        <a href="<?php the_permalink(); ?>"><?php echo $post_thumbnail?></a>
                        <?php endif; ?>
                        <p class="wp-caption-text">
                            <?php
                                printf
_n'This gallery contains <a href="%1$s" rel="bookmark">%2$s photo</a>.''This gallery contains <a href="%1$s" rel="bookmark">%2$s photos</a>.'$total_images'twentyfourteen' ),
                                    
esc_urlget_permalink() ),
                                    
number_format_i18n$total_images )
                                );
                            
?>
                        </p>
                        <?php
                                
endif;

                            else :
                                
the_content__'Continue reading <span class="meta-nav">&rarr;</span>''twentyfourteen' ) );
                            endif;
                        
?>
                    </div><!-- .entry-content -->

                    <header class="entry-header">
                        <div class="entry-meta">
                            <?php
                                
if ( ! has_post_format'link' ) ) :
                                    
the_title'<h1 class="entry-title"><a href="' esc_urlget_permalink() ) . '" rel="bookmark">''</a></h1>' );
                                endif;

                                
printf'<span class="entry-date"><a href="%1$s" rel="bookmark"><time class="entry-date" datetime="%2$s">%3$s</time></a></span> <span class="byline"><span class="author vcard"><a class="url fn n" href="%4$s" rel="author">%5$s</a></span></span>',
                                    
esc_urlget_permalink() ),
                                    
esc_attrget_the_date'c' ) ),
                                    
esc_htmlget_the_date() ),
                                    
esc_urlget_author_posts_urlget_the_author_meta'ID' ) ) ),
                                    
get_the_author()
                                );

                                if ( ! 
post_password_required() && ( comments_open() || get_comments_number() ) ) :
                            
?>
                            <span class="comments-link"><?php comments_popup_link__'Leave a comment''twentyfourteen' ), __'1 Comment''twentyfourteen' ), __'% Comments''twentyfourteen' ) ); ?></span>
                            <?php endif; ?>
                        </div><!-- .entry-meta -->
                    </header><!-- .entry-header -->
                </article><!-- #post-## -->
                </li>
                <?php endwhile; ?>

            </ol>
            <a class="post-format-archive-link" href="<?php echo esc_urlget_post_format_link$format ) ); ?>">
                <?php
                    
/* translators: used with More archives link */
                    
printf__'%s <span class="meta-nav">&rarr;</span>''twentyfourteen' ), $format_string_more );
                
?>
            </a>
            <?php

            
echo $args['after_widget'];

            
// Reset the post globals as this query will have stomped on it.
            
wp_reset_postdata();

            
$GLOBALS['more']          = $tmp_more;
            
$GLOBALS['content_width'] = $tmp_content_width;

        endif; 
// End check for ephemeral posts.
    
}

    
/**
     * Deal with the settings when they are saved by the admin.
     *
     * Here is where any validation should happen.
     *
     * @since Twenty Fourteen 1.0
     *
     * @param array $new_instance New widget instance.
     * @param array $instance     Original widget instance.
     * @return array Updated widget instance.
     */
    
function update$new_instance$instance ) {
        
$instance['title']  = strip_tags$new_instance['title'] );
        
$instance['number'] = empty( $new_instance['number'] ) ? absint$new_instance['number'] );
        if ( 
in_array$new_instance['format'], $this->formats ) ) {
            
$instance['format'] = $new_instance['format'];
        }

        return 
$instance;
    }

    
/**
     * Display the form for this widget on the Widgets page of the Admin area.
     *
     * @since Twenty Fourteen 1.0
     *
     * @param array $instance
     */
    
function form$instance ) {
        
$title  = empty( $instance['title'] ) ? '' esc_attr$instance['title'] );
        
$number = empty( $instance['number'] ) ? absint$instance['number'] );
        
$format = isset( $instance['format'] ) && in_array$instance['format'], $this->formats ) ? $instance['format'] : 'aside';
        
?>
            <p><label for="<?php echo esc_attr$this->get_field_id'title' ) ); ?>"><?php _e'Title:''twentyfourteen' ); ?></label>
            <input id="<?php echo esc_attr$this->get_field_id'title' ) ); ?>" class="widefat" name="<?php echo esc_attr$this->get_field_name'title' ) ); ?>" type="text" value="<?php echo esc_attr$title ); ?>"></p>

            <p><label for="<?php echo esc_attr$this->get_field_id'number' ) ); ?>"><?php _e'Number of posts to show:''twentyfourteen' ); ?></label>
            <input id="<?php echo esc_attr$this->get_field_id'number' ) ); ?>" name="<?php echo esc_attr$this->get_field_name'number' ) ); ?>" type="text" value="<?php echo esc_attr$number ); ?>" size="3"></p>

            <p><label for="<?php echo esc_attr$this->get_field_id'format' ) ); ?>"><?php _e'Post format to show:''twentyfourteen' ); ?></label>
            <select id="<?php echo esc_attr$this->get_field_id'format' ) ); ?>" class="widefat" name="<?php echo esc_attr$this->get_field_name'format' ) ); ?>">
                <?php foreach ( $this->formats as $slug ) : ?>
                <option value="<?php echo esc_attr$slug ); ?>"<?php selected$format$slug ); ?>><?php echo esc_htmlget_post_format_string$slug ) ); ?></option>
                <?php endforeach; ?>
            </select>
        <?php
    
}
}
Онлайн: 1
Реклама