WordPress.org

Make WordPress Core

Ticket #35990: 35990.0.diff

File 35990.0.diff, 2.3 KB (added by westonruter, 5 years ago)
  • src/wp-includes/widgets.php

    diff --git src/wp-includes/widgets.php src/wp-includes/widgets.php
    index 6c559c3..e041ad3 100644
    function wp_widgets_init() { 
    14571457
    14581458        register_widget('WP_Widget_Categories');
    14591459
    1460         register_widget('WP_Widget_Recent_Posts');
     1460        foreach ( get_post_types( array( 'public' => true ), 'objects' ) as $post_type_obj ) {
     1461                $recent_posts_widget = new WP_Widget_Recent_Posts( $post_type_obj->name );
     1462                register_widget( $recent_posts_widget );
     1463        }
    14611464
    14621465        register_widget('WP_Widget_Recent_Comments');
    14631466
  • src/wp-includes/widgets/class-wp-widget-recent-posts.php

    diff --git src/wp-includes/widgets/class-wp-widget-recent-posts.php src/wp-includes/widgets/class-wp-widget-recent-posts.php
    index 8f92bf3..46a151f 100644
     
    1717class WP_Widget_Recent_Posts extends WP_Widget {
    1818
    1919        /**
     20         * Post type for this widget.
     21         *
     22         * @var string
     23         */
     24        public $post_type = 'post';
     25
     26        /**
    2027         * Sets up a new Recent Posts widget instance.
    2128         *
    2229         * @since 2.8.0
    2330         * @access public
     31         *
     32         * @param string $post_type Post type.
    2433         */
    25         public function __construct() {
    26                 $widget_ops = array('classname' => 'widget_recent_entries', 'description' => __( "Your site’s most recent Posts.") );
    27                 parent::__construct('recent-posts', __('Recent Posts'), $widget_ops);
     34        public function __construct( $post_type = 'post' ) {
     35                $this->post_type = $post_type;
     36                $post_type_obj = get_post_type( $post_type );
     37                $widget_ops = array(
     38                        'classname' => 'widget_recent_entries',
     39                        'description' => sprintf( __( 'Your site’s most recent %s.', $post_type_obj->labels->name ) ),
     40                );
     41                $id_base = sprintf( 'recent-%s', $post_type === 'post' ? 'posts' : "$post_type-posts" );
     42                parent::__construct(
     43                        $id_base,
     44                        sprintf( __( 'Recent %s', $post_type_obj->labels->name ) ),
     45                        $widget_ops
     46                );
    2847                $this->alt_option_name = 'widget_recent_entries';
    2948        }
    3049
    class WP_Widget_Recent_Posts extends WP_Widget { 
    6685                        'posts_per_page'      => $number,
    6786                        'no_found_rows'       => true,
    6887                        'post_status'         => 'publish',
    69                         'ignore_sticky_posts' => true
     88                        'ignore_sticky_posts' => true,
     89                        'post_type'           => $this->post_type,
    7090                ) ) );
    7191
    7292                if ($r->have_posts()) :