PageRenderTime 43ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/wordpress/wp-content/themes/twentyeleven/inc/widgets.php

https://gitlab.com/mike_tm555/batiste
PHP | 186 lines | 105 code | 29 blank | 52 comment | 11 complexity | 04ddaa6a6f0dd477a60804263de3e5fe MD5 | raw file
  1. <?php
  2. /**
  3. * Widget For displaying post format posts
  4. *
  5. * Handles displaying Aside, Link, Status, and Quote Posts available with Twenty Eleven.
  6. *
  7. * @link https://codex.wordpress.org/Widgets_API#Developing_Widgets
  8. *
  9. * @package WordPress
  10. * @subpackage Twenty_Eleven
  11. * @since Twenty Eleven 1.0
  12. */
  13. class Twenty_Eleven_Ephemera_Widget extends WP_Widget {
  14. /**
  15. * PHP5 constructor.
  16. *
  17. * @since Twenty Eleven 2.2
  18. */
  19. function __construct() {
  20. parent::__construct( 'widget_twentyeleven_ephemera', __( 'Twenty Eleven Ephemera', 'twentyeleven' ), array(
  21. 'classname' => 'widget_twentyeleven_ephemera',
  22. 'description' => __( 'Use this widget to list your recent Aside, Status, Quote, and Link posts', 'twentyeleven' ),
  23. 'customize_selective_refresh' => true,
  24. ) );
  25. $this->alt_option_name = 'widget_twentyeleven_ephemera';
  26. add_action( 'save_post', array( &$this, 'flush_widget_cache' ) );
  27. add_action( 'deleted_post', array( &$this, 'flush_widget_cache' ) );
  28. add_action( 'switch_theme', array( &$this, 'flush_widget_cache' ) );
  29. }
  30. /**
  31. * PHP4 constructor.
  32. *
  33. * @since Twenty Eleven 1.0
  34. */
  35. function Twenty_Eleven_Ephemera_Widget() {
  36. self::__construct();
  37. }
  38. /**
  39. * Outputs the HTML for this widget.
  40. *
  41. * @since Twenty Eleven 1.0
  42. *
  43. * @param array $args An array of standard parameters for widgets in this theme.
  44. * @param array $instance An array of settings for this widget instance.
  45. **/
  46. function widget( $args, $instance ) {
  47. $cache = wp_cache_get( 'widget_twentyeleven_ephemera', 'widget' );
  48. if ( ! is_array( $cache ) )
  49. $cache = array();
  50. if ( ! isset( $args['widget_id'] ) )
  51. $args['widget_id'] = null;
  52. if ( isset( $cache[ $args['widget_id'] ] ) ) {
  53. echo $cache[ $args['widget_id'] ];
  54. return;
  55. }
  56. ob_start();
  57. extract( $args, EXTR_SKIP );
  58. /** This filter is documented in wp-includes/default-widgets.php */
  59. $args['title'] = apply_filters( 'widget_title', empty( $instance['title'] ) ? __( 'Ephemera', 'twentyeleven' ) : $instance['title'], $instance, $this->id_base );
  60. if ( ! isset( $instance['number'] ) )
  61. $instance['number'] = '10';
  62. if ( ! $args['number'] = absint( $instance['number'] ) )
  63. $args['number'] = 10;
  64. $ephemera_args = array(
  65. 'order' => 'DESC',
  66. 'posts_per_page' => $args['number'],
  67. 'no_found_rows' => true,
  68. 'post_status' => 'publish',
  69. 'post__not_in' => get_option( 'sticky_posts' ),
  70. 'tax_query' => array(
  71. array(
  72. 'taxonomy' => 'post_format',
  73. 'terms' => array( 'post-format-aside', 'post-format-link', 'post-format-status', 'post-format-quote' ),
  74. 'field' => 'slug',
  75. 'operator' => 'IN',
  76. ),
  77. ),
  78. );
  79. $ephemera = new WP_Query( $ephemera_args );
  80. if ( $ephemera->have_posts() ) :
  81. echo $args['before_widget'];
  82. echo $args['before_title'];
  83. echo $args['title'];
  84. echo $args['after_title'];
  85. ?>
  86. <ol>
  87. <?php while ( $ephemera->have_posts() ) : $ephemera->the_post(); ?>
  88. <?php if ( 'link' != get_post_format() ) : ?>
  89. <li class="widget-entry-title">
  90. <a href="<?php echo esc_url( get_permalink() ); ?>" rel="bookmark"><?php the_title(); ?></a>
  91. <span class="comments-link">
  92. <?php comments_popup_link( __( '0 <span class="reply">comments &rarr;</span>', 'twentyeleven' ), __( '1 <span class="reply">comment &rarr;</span>', 'twentyeleven' ), __( '% <span class="reply">comments &rarr;</span>', 'twentyeleven' ) ); ?>
  93. </span>
  94. </li>
  95. <?php else : ?>
  96. <li class="widget-entry-title">
  97. <a href="<?php echo esc_url( twentyeleven_get_first_url() ); ?>" rel="bookmark"><?php the_title(); ?>&nbsp;<span>&rarr;</span></a>
  98. <span class="comments-link">
  99. <?php comments_popup_link( __( '0 <span class="reply">comments &rarr;</span>', 'twentyeleven' ), __( '1 <span class="reply">comment &rarr;</span>', 'twentyeleven' ), __( '% <span class="reply">comments &rarr;</span>', 'twentyeleven' ) ); ?>
  100. </span>
  101. </li>
  102. <?php endif; ?>
  103. <?php endwhile; ?>
  104. </ol>
  105. <?php
  106. echo $args['after_widget'];
  107. // Reset the post globals as this query will have stomped on it
  108. wp_reset_postdata();
  109. // end check for ephemeral posts
  110. endif;
  111. $cache[ $args['widget_id'] ] = ob_get_flush();
  112. wp_cache_set( 'widget_twentyeleven_ephemera', $cache, 'widget' );
  113. }
  114. /**
  115. * Update widget settings.
  116. *
  117. * Deals with the settings when they are saved by the admin. Here is
  118. * where any validation should be dealt with.
  119. *
  120. * @since Twenty Eleven 1.0
  121. **/
  122. function update( $new_instance, $old_instance ) {
  123. $instance = $old_instance;
  124. $instance['title'] = strip_tags( $new_instance['title'] );
  125. $instance['number'] = (int) $new_instance['number'];
  126. $this->flush_widget_cache();
  127. $alloptions = wp_cache_get( 'alloptions', 'options' );
  128. if ( isset( $alloptions['widget_twentyeleven_ephemera'] ) )
  129. delete_option( 'widget_twentyeleven_ephemera' );
  130. return $instance;
  131. }
  132. /**
  133. * Flush widget cache.
  134. *
  135. * @since Twenty Eleven 1.0
  136. */
  137. function flush_widget_cache() {
  138. wp_cache_delete( 'widget_twentyeleven_ephemera', 'widget' );
  139. }
  140. /**
  141. * Set up the widget form.
  142. *
  143. * Displays the form for this widget on the Widgets page of the WP Admin area.
  144. *
  145. * @since Twenty Eleven 1.0
  146. **/
  147. function form( $instance ) {
  148. $title = isset( $instance['title']) ? esc_attr( $instance['title'] ) : '';
  149. $number = isset( $instance['number'] ) ? absint( $instance['number'] ) : 10;
  150. ?>
  151. <p><label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"><?php _e( 'Title:', 'twentyeleven' ); ?></label>
  152. <input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" /></p>
  153. <p><label for="<?php echo esc_attr( $this->get_field_id( 'number' ) ); ?>"><?php _e( 'Number of posts to show:', 'twentyeleven' ); ?></label>
  154. <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>
  155. <?php
  156. }
  157. }