下一个/上一个链接帖子功能不起作用

时间:2013-07-11 03:26:57

标签: wordpress

我在localhost上使用此功能,但是当我迁移到我的站点时,它显示为null。

function mod_get_adjacent_post( $direction = 'prev', $post_types = 'post' ) {

global $post, $wpdb;

if(empty($post)) return NULL;
if(!$post_types) return NULL;

if(is_array($post_types)){
    $txt = '';
    for($i = 0; $i <= count($post_types) - 1; $i++){
        $txt .= "'".$post_types[$i]."'";
        if($i != count($post_types) - 1) $txt .= ', ';
    }
    $post_types = $txt;
}

$current_post_date = $post->post_date;

$join = '';
$in_same_cat = FALSE;
$excluded_categories = '';
$adjacent = $direction == 'prev' ? 'previous' : 'next';
$op = $direction == 'prev' ? '<' : '>';
$order = $direction == 'prev' ? 'DESC' : 'ASC';

$join  = apply_filters( "get_{$adjacent}_post_join", $join, $in_same_cat, $excluded_categories );
$where = apply_filters( "get_{$adjacent}_post_where", $wpdb->prepare("WHERE p.post_date $op %s AND p.post_type IN({$post_types}) AND p.post_status = 'publish'", $current_post_date), $in_same_cat, $excluded_categories );
$sort  = apply_filters( "get_{$adjacent}_post_sort", "ORDER BY p.post_date $order LIMIT 1" );

$query = "SELECT p.* FROM $wpdb->posts AS p $join $where $sort";
$query_key = 'adjacent_post_' . md5($query);
$result = wp_cache_get($query_key, 'counts');

if ( false !== $result )
    return $result;

$result = $wpdb->get_row("SELECT p.* FROM $wpdb->posts AS p $join $where $sort");

if ( null === $result )
    $result = '';

wp_cache_set($query_key, $result, 'counts');
return $result;
}

在我的single-post.php中:

<?php 
$prev = mod_get_adjacent_post('prev', 'post'); 
$next = mod_get_adjacent_post('next', 'post'); ?> 
<a href="<?php echo get_permalink($prev->ID)?>" id="postprev"><i class="post-prev"></i> Previous Post</a> 
<a href="<?php echo get_permalink($next->ID)?>" id="postnext">Next Post <i class="post-next"></i></a> 

当我var_dump($prev)显示string(0)"" (NULL)时。如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您可以交替使用:get_next_post()get_previous_post()函数。

例如:

<?php $nextpost = get_next_post();
$excerpt = $nextpost->post_excerpt ? $nextpost->post_excerpt :apply_filters('get_the_excerpt', $nextpost->post_content);
echo $excerpt; ?>

http://codex.wordpress.org/Function_Reference/get_next_post

http://codex.wordpress.org/Function_Reference/get_previous_post