/**
  * @ticket 17807
  */
 public function test_get_adjacent_post()
 {
     // Need some sample posts to test adjacency
     $post_one = self::factory()->post->create_and_get(array('post_title' => 'First', 'post_date' => '2012-01-01 12:00:00'));
     $post_two = self::factory()->post->create_and_get(array('post_title' => 'Second', 'post_date' => '2012-02-01 12:00:00'));
     $post_three = self::factory()->post->create_and_get(array('post_title' => 'Third', 'post_date' => '2012-03-01 12:00:00'));
     $post_four = self::factory()->post->create_and_get(array('post_title' => 'Fourth', 'post_date' => '2012-04-01 12:00:00'));
     // Assign some terms
     wp_set_object_terms($post_one->ID, 'wordpress', 'category', false);
     wp_set_object_terms($post_three->ID, 'wordpress', 'category', false);
     wp_set_object_terms($post_two->ID, 'plugins', 'post_tag', false);
     wp_set_object_terms($post_four->ID, 'plugins', 'post_tag', false);
     // Test normal post adjacency
     $this->go_to(get_permalink($post_two->ID));
     $this->assertEquals($post_one, get_adjacent_post(false, '', true));
     $this->assertEquals($post_three, get_adjacent_post(false, '', false));
     $this->assertNotEquals($post_two, get_adjacent_post(false, '', true));
     $this->assertNotEquals($post_two, get_adjacent_post(false, '', false));
     // Test category adjacency
     $this->go_to(get_permalink($post_one->ID));
     $this->assertEquals('', get_adjacent_post(true, '', true, 'category'));
     $this->assertEquals($post_three, get_adjacent_post(true, '', false, 'category'));
     // Test tag adjacency
     $this->go_to(get_permalink($post_two->ID));
     $this->assertEquals('', get_adjacent_post(true, '', true, 'post_tag'));
     $this->assertEquals($post_four, get_adjacent_post(true, '', false, 'post_tag'));
     // Test normal boundary post
     $this->go_to(get_permalink($post_two->ID));
     $this->assertEquals(array($post_one), get_boundary_post(false, '', true));
     $this->assertEquals(array($post_four), get_boundary_post(false, '', false));
     // Test category boundary post
     $this->go_to(get_permalink($post_one->ID));
     $this->assertEquals(array($post_one), get_boundary_post(true, '', true, 'category'));
     $this->assertEquals(array($post_three), get_boundary_post(true, '', false, 'category'));
     // Test tag boundary post
     $this->go_to(get_permalink($post_two->ID));
     $this->assertEquals(array($post_two), get_boundary_post(true, '', true, 'post_tag'));
     $this->assertEquals(array($post_four), get_boundary_post(true, '', false, 'post_tag'));
 }
Пример #2
0
/**
 * Get boundary post relational link.
 *
 * Can either be start or end post relational link.
 *
 * @since 2.8.0
 * @deprecated 3.3.0
 *
 * @param string $title Optional. Link title format.
 * @param bool $in_same_cat Optional. Whether link should be in a same category.
 * @param string $excluded_categories Optional. Excluded categories IDs.
 * @param bool $start Optional, default is true. Whether to display link to first or last post.
 * @return string
 */
function get_boundary_post_rel_link($title = '%title', $in_same_cat = false, $excluded_categories = '', $start = true)
{
    _deprecated_function(__FUNCTION__, '3.3');
    $posts = get_boundary_post($in_same_cat, $excluded_categories, $start);
    // If there is no post stop.
    if (empty($posts)) {
        return;
    }
    // Even though we limited get_posts to return only 1 item it still returns an array of objects.
    $post = $posts[0];
    if (empty($post->post_title)) {
        $post->post_title = $start ? __('First Post') : __('Last Post');
    }
    $date = mysql2date(get_option('date_format'), $post->post_date);
    $title = str_replace('%title', $post->post_title, $title);
    $title = str_replace('%date', $date, $title);
    $title = apply_filters('the_title', $title, $post->ID);
    $link = $start ? "<link rel='start' title='" : "<link rel='end' title='";
    $link .= esc_attr($title);
    $link .= "' href='" . get_permalink($post) . "' />\n";
    $boundary = $start ? 'start' : 'end';
    return apply_filters("{$boundary}_post_rel_link", $link);
}
Пример #3
0
</a></span>
              <?php 
        }
        ?>
              <?php 
        if (get_adjacent_post($in_same_cat = true, '', $previous = false)) {
            ?>
					  <span class="next"><?php 
            next_post_link('%link', 'Next: %title &rsaquo;', true);
            ?>
</span>
              <?php 
        } else {
            ?>
					  <?php 
            $first_post = array_pop(get_boundary_post($in_same_cat = true, '', $oldest = true));
            ?>
					  <span class="next"><a href="<?php 
            echo get_permalink($first_post);
            ?>
">First: <?php 
            echo $first_post->post_title;
            ?>
 &rsaquo;</a></span>
              <?php 
        }
        ?>
            </div>
            <?php 
    }
    ?>