How to show recent pages not posts

  • Unknown's avatar

    Hi all,

    I’ve been trying to get my home page to show recent pages and not posts but since I have no idea how to change the code can someone help me? I’ve been searching online for days and can’t find the answer :-(.

    I’m using the Alizee theme that nicely shows recent posts in 3 columns but I’m using pages not posts. What do I need to change in the following php code to have recent pages displayed instead of posts?

    <?php

    class Alizee_Recent_Posts extends WP_Widget {

    // constructor
    function alizee_recent_posts() {
    $widget_ops = array(‘classname’ => ‘alizee_recent_posts_widget’, ‘description’ => __( ‘Display your site’s recent posts with thumbnails.’, ‘alizee’) );
    parent::WP_Widget(false, $name = __(‘Alizee: Recent Posts’, ‘alizee’), $widget_ops);
    $this->alt_option_name = ‘Alizee_Recent_Posts_widget’;

    add_action( ‘save_post’, array($this, ‘flush_widget_cache’) );
    add_action( ‘deleted_post’, array($this, ‘flush_widget_cache’) );
    add_action( ‘switch_theme’, array($this, ‘flush_widget_cache’) );
    }

    // widget form creation
    function form($instance) {

    // Check values
    $title = isset( $instance[‘title’] ) ? esc_attr( $instance[‘title’] ) : ”;
    $number = isset( $instance[‘number’] ) ? absint( $instance[‘number’] ) : 5;
    $show_date = isset( $instance[‘show_date’] ) ? (bool) $instance[‘show_date’] : false;
    ?>

    <p>
    <label for=”<?php echo $this->get_field_id(‘title’); ?>”><?php _e(‘Title’, ‘alizee’); ?></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 $title; ?>” />
    </p>

    <p><label for=”<?php echo $this->get_field_id( ‘number’ ); ?>”><?php _e( ‘Number of posts to show:’, ‘alizee’ ); ?></label>
    <input id=”<?php echo $this->get_field_id( ‘number’ ); ?>” name=”<?php echo $this->get_field_name( ‘number’ ); ?>” type=”text” value=”<?php echo $number; ?>” size=”3″ /></p>

    <p><input class=”checkbox” type=”checkbox” <?php checked( $show_date ); ?> id=”<?php echo $this->get_field_id( ‘show_date’ ); ?>” name=”<?php echo $this->get_field_name( ‘show_date’ ); ?>” />
    <label for=”<?php echo $this->get_field_id( ‘show_date’ ); ?>”><?php _e( ‘Display post date?’, ‘alizee’ ); ?></label></p>

    <?php
    }

    // update widget
    function update($new_instance, $old_instance) {
    $instance = $old_instance;
    $instance[‘title’] = strip_tags($new_instance[‘title’]);
    $instance[‘number’] = strip_tags($new_instance[‘number’]);
    $instance[‘show_date’] = isset( $new_instance[‘show_date’] ) ? (bool) $new_instance[‘show_date’] : false;
    $this->flush_widget_cache();

    $alloptions = wp_cache_get( ‘alloptions’, ‘options’ );
    if ( isset($alloptions[‘Alizee_Recent_Posts’]) )
    delete_option(‘Alizee_Recent_Posts’);

    return $instance;
    }

    function flush_widget_cache() {
    wp_cache_delete(‘Alizee_Recent_Posts’, ‘widget’);
    }

    // display widget
    function widget($args, $instance) {
    $cache = array();
    if ( ! $this->is_preview() ) {
    $cache = wp_cache_get( ‘Alizee_Recent_Posts’, ‘widget’ );
    }

    if ( ! is_array( $cache ) ) {
    $cache = array();
    }

    if ( ! isset( $args[‘widget_id’] ) ) {
    $args[‘widget_id’] = $this->id;
    }

    if ( isset( $cache[ $args[‘widget_id’] ] ) ) {
    echo $cache[ $args[‘widget_id’] ];
    return;
    }

    ob_start();
    extract($args);

    $title = ( ! empty( $instance[‘title’] ) ) ? $instance[‘title’] : __( ‘Recent Posts’, ‘alizee’ );

    /** This filter is documented in wp-includes/default-widgets.php */
    $title = apply_filters( ‘widget_title’, $title, $instance, $this->id_base );

    $number = ( ! empty( $instance[‘number’] ) ) ? absint( $instance[‘number’] ) : 5;
    if ( ! $number )
    $number = 5;
    $show_date = isset( $instance[‘show_date’] ) ? $instance[‘show_date’] : false;

    /**
    * Filter the arguments for the Recent Posts widget.
    *
    * @since 3.4.0
    *
    * @see WP_Query::get_posts()
    *
    * @param array $args An array of arguments used to retrieve the recent posts.
    */
    $r = new WP_Query( apply_filters( ‘widget_posts_args’, array(
    ‘posts_per_page’ => $number,
    ‘no_found_rows’ => true,
    ‘post_status’ => ‘publish’,
    ‘ignore_sticky_posts’ => true
    ) ) );

    if ($r->have_posts()) :
    ?>
    <?php echo $before_widget; ?>
    <?php if ( $title ) echo $before_title . $title . $after_title; ?>
    <ul class=”list-group”>
    <?php while ( $r->have_posts() ) : $r->the_post(); ?>
    <li class=”list-group-item”>
    <div class=”recent-post clearfix”>
    <?php if ( has_post_thumbnail()) : ?>
    <div class=”recent-thumb col-md-4″>
    “><?php the_post_thumbnail(‘thumbnail’); ?>
    </div>
    <?php endif; ?>
    <?php if ( has_post_thumbnail()) : ?>
    <?php echo ‘<div class=”col-md-8″>’; ?>
    <?php else : ?>
    <?php echo ‘<div class=”col-md-12″>’; ?>
    <?php endif; ?>
    <h4>“><?php get_the_title() ? the_title() : the_ID(); ?></h4>
    <?php if ( $show_date ) : ?>
    <span class=”post-date”><i class=”fa fa-calendar”></i> <?php echo get_the_date(); ?></span></div>
    <?php else : ?>
    <?php echo ‘</div>’; ?>
    <?php endif; ?>
    </div>

    <?php endwhile; ?>

    <?php echo $after_widget; ?>
    <?php
    // Reset the global $the_post as this query will have stomped on it
    wp_reset_postdata();

    endif;

    if ( ! $this->is_preview() ) {
    $cache[ $args[‘widget_id’] ] = ob_get_flush();
    wp_cache_set( ‘Alizee_Recent_Posts’, $cache, ‘widget’ );
    } else {
    ob_end_flush();
    }
    }

    }

    The blog I need help with is: (visible only to logged in users)

  • Unknown's avatar
    thistimethisspace · Member ·

    Your site is not hosted by wordpress.COM. It’s a wordpress.ORG install. I’m sorry but you are posting to the wrong support forum. We cannot help you here at wordpress.COM because that site is not hosted here and we do not provide support for sites we do not host.

    WordPress.COM and WordPress.ORG are completely separate and have different username accounts, logins, features, run different versions of some themes with the same names, and have separate support documentation and separate support forums. Read the differences here http://en.support.wordpress.com/com-vs-org/

    If you don’t have a username account at WordPress.ORG account, then click http://wordpress.org/support/ and register one on the top right hand corner of the page that opens, https://wordpress.org/support/register.php so you can post to the support forums there.
    Resetting your WordPress.ORG password http://codex.wordpress.org/Resetting_Your_Password
    WordPress.org support docs are at https://codex.wordpress.org/Main_Page

  • The topic ‘How to show recent pages not posts’ is closed to new replies.