WordPress.org

Ready to get started?Download WordPress

Forums

Future posts in single view - help! (11 posts)

  1. heriz
    Member
    Posted 5 years ago #

    I posted this in the How To forum but it might be more suited here.

    This is very weird, and an urgent problem - if anyone has any clues as to what's going on, please do let me know asap...

    I have a page which pulls in future posts to create an events page.

    The single view shows the post using this code:

    <?php /* If this is in category Events show Event posts */ if (in_category(4) && is_single()) { ?>
    	<?php if (have_posts()) : ?>
    
    	<?php while (have_posts()) : the_post(); ?>
    
    		<!-- LEFT WIDE COLUMN --><div id="left-column-wide">
    				<div <?php post_class() ?> id="post-<?php the_ID(); ?>">
    				<h2><?php the_title(); ?></h2>
    				<div id="event-details-main">
    				<h3><?php the_time('l, F jS, Y') ?></h3>
    				<?php // this is where the custom field prints the event's start and end times
    				$values = get_post_custom_values("event-time"); echo $values[0]; ?>,
    				<?php // this is where the custom field prints the event's venue
    				$values = get_post_custom_values("event-venue"); echo $values[0]; ?><br />
    				<?php // this is where the custom field prints the event's entry price
    				$values = get_post_custom_values("event-price"); echo $values[0]; ?>
    				</div>
    
    					<?php the_content('<p class="serif">Read the rest of this entry &raquo;</p>'); ?>
    
    					<?php wp_link_pages(array('before' => '<div class="page-links"><span class="normal">Pages:</span> ', 'after' => '</div>', 'next_or_number' => 'number')); ?>
    					<!-- <?php the_tags( '<p>Tags: ', ', ', '</p>'); ?> -->
    			</div>
    
    			<div class="commentbox"><?php comments_template(); ?></div>
    
    	<?php endwhile; else: ?>
    
    		<p>Sorry, no posts matched your criteria.</p>
    
    	<?php endif; ?>

    And the list of posts in the right-hand sidebar is created with this code:

    <?php
    		$my_query = new WP_Query('category_name=events&post_status=future&order=ASC');
    		?>
    
    		<?php
    		if ($my_query->have_posts()) : while ($my_query->have_posts()) :
    		$my_query->the_post();
    		$do_not_duplicate = $post->ID;
    		?>
    
    		<dl class="giglist">
    		<dt><u><a href="<?php the_permalink(); ?>"><?php the_time('l, F jS, Y') ?></a></u>:</dt>
    		<dd><h4><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h4></dd>
    		<dd><span class="small"><?php // this is where the custom field prints the event's venue
    				$values = get_post_custom_values("event-venue"); echo $values[0]; ?></span></dd>
    		</dl>
    
    		<?php endwhile;?>
    		<p>&nbsp;</p><p>&nbsp;</p>
    		<h4>Previous Events</h4>
    		<?php
    		$my_query = new WP_Query('category_name=events');
    		while ($my_query->have_posts()) : $my_query->the_post();
    		$do_not_duplicate = $post->ID;
    		?>
    
    		<dl class="giglist">
    		<dt><u><?php the_time('l, F jS, Y') ?></u>:</dt>
    		<dd><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></dd>
    		</dl>
    
    		<?php endwhile; else: ?>
    		<p><?php _e('Sorry, no shows at present.'); ?></p>
    		<?php endif; ?>

    The latter code is also used on the Category page, which readers click through to get to the single pages in that category.

    But the single pages are throwing up 404 error pages. At least, they are using the validator - the strangest thing is, I can see the posts working fine, despite turning off WP Supercache and clearing my browser's cache.

    This wasn't an issue til a few days ago, and I haven't changed anything that I can think of.

    Custom permalink structure is: /%category%/%postname%.html

    With category base set at .

    This is one of the pages in question: http://tinyurl.com/pqzpka

    Please help if you can!

    Thanks

  2. jadedstudio
    Member
    Posted 5 years ago #

    Hi, I'm having the exact same problem, how did you solve this (the site you gave seems to be working now).

    Any help would be much appreciated...

  3. jadedstudio
    Member
    Posted 5 years ago #

    Okay found out WordPress doesn't show future single.php posts by default. It requires a small hack of query.php in wp-includes to enable the posts to display.

    If any one needs the hack post below!!

  4. paul_fury
    Member
    Posted 5 years ago #

    I need the hack!

  5. heriz
    Member
    Posted 4 years ago #

    The hack is here:

    http://wordpress.org/support/topic/141099

    BUT this was for an old version of WP, and as far as I can tell it can't be dropped into 2.8.4's query.php.

    For those who know their code, I think line 2127 seems to be the area needed to be hacked, but I don't know my code so that could be rubbish.

    } elseif ( !$this->is_singular ) {
    			$where .= " AND ($wpdb->posts.post_status = 'publish'";
    
    			if ( is_admin() )
    				$where .= " OR $wpdb->posts.post_status = 'future' OR $wpdb->posts.post_status = 'draft' OR $wpdb->posts.post_status = 'pending'";
    
    			if ( is_user_logged_in() ) {
    				$where .= current_user_can( "read_private_{$post_type}s" ) ? " OR $wpdb->posts.post_status = 'private'" : " OR $wpdb->posts.post_author = $user_ID AND $wpdb->posts.post_status = 'private'";
    			}

    What to do with this, I've no idea.

    However, when the hack is in place the future posts mechanism used as an events listing is incredibly elegant (bar the problem of RSS). To simply have a future date published for viewing, which automatically files into 'past events' once the date has passed, is so useful.

    I do use this for one of my sites but since the upgrade I'm going to have to find another option. Unfortunately I exhausted them when resorting to this hack so I'm not sure how I'm going to find a solution.

    Any help or pointers on this would be hugely appreciated. I think it may be something that'd interest a lot of other people too.

  6. heriz
    Member
    Posted 4 years ago #

    I can't see there being a solution though - as future posts was always meant to be for scheduling the publish date, not just giving a post a future date.

    And I'm done with hacking core files - it's such a bad idea.

    I think I'm going to use tags + custom fields for this, and forget using the post date for the event date.

  7. dameer
    Member
    Posted 4 years ago #

    No need for core files hack. Future posts can't be treated as normal posts hence the fact they are not published. I had to modify 404.php template file because WP automatically redirects future post details request to 404.php. Something like this worked for me...

    // put all of your future posts in separate category
    // permalinks must be set to custom, /%category%/%postname%/
    // ...otherwise you'll have to find the way to extract category and post slug
    $cat_future_id = 4; // ID of future posts category
        // explode URI
        $arr_path = explode( '/', $_SERVER[ 'REQUEST_URI' ] );
        // get category slug from ID
        $future_name = $wpdb->get_var( "SELECT slug FROM $wpdb->terms WHERE term_id=" . $cat_future_id );
        if( $arr_path[ 1 ] === $future_name ) {
            // query_posts() or new WP_Query() will not work
            $wpq = "SELECT * FROM $wpdb->posts WHERE post_name='" . $arr_path[ 2 ] . "' AND post_status='future'";
            $post = $wpdb->get_results( $wpq );
            if( $post ) {
                foreach( $post as $pos ) {
                    // do whatever is required
                }
            } else {
                // post not found, empty or error
            }
        } else {
            // display regular 404 error text
        }

    Hopefully it does make sense. Just to repeat that this code must be used on '404.php' template file!

  8. Stanley Dumanig
    Member
    Posted 4 years ago #

    No need of ANY hack! Just install the plugin below:

    http://wordpress.org/extend/plugins/show-future-posts-on-single-post/

  9. mopress
    Member
    Posted 4 years ago #

    elegant plugin, thanks.

    btw: for the index and archive pages I use the following query, where # is the category for my upcoming calendar listings

    '<?php query_posts('cat=#&order=asc&post_status=future,publish'); ?>'

  10. djameskennedy
    Member
    Posted 4 years ago #

    Hey Mr. Dumaning. Thanks alot...I was having similar troubles! I just installed the plugin and it appears to be working. I'll try to remember and come back and give you a good rating if it holds up!

  11. karlman01
    Member
    Posted 4 years ago #

    Thank you! That query_posts line combined with the "Show Future Posts" plugin makes for some real magic!

Topic Closed

This topic has been closed to new replies.

About this Topic