WordPress.org

Ready to get started?Download WordPress

Forums

Alphabetical previous/next links? (6 posts)

  1. jirikai
    Member
    Posted 5 years ago #

    Hello!

    I've been trying for days to write out an original plugin that will show "previous" and "Next" links that will direct to the next post alphabetically by title.

    For instance, If I posted these:

    Title: Hello my name is | page:/?p=50
    Title: Hello my surname is | :/?p=15
    Title: Hello my dog's name is | page:/?p=25
    Title: Hello my Workplace name is | page:/?p=23

    The it would go in the following order:
    dog > name > surname > workplace

    Regardless of post id. Just based on the title.

    Sadly I have done nothing except create errors lol.

    I have also tried editing existing previous/next plugins but still no joy.

    Please help!

  2. jirikai
    Member
    Posted 5 years ago #

    Can anyone help?

  3. remembermies
    Member
    Posted 5 years ago #

    Hey Jirikai,
    I had a similar need and ended up discovering that this really needs a custom query to make it happen. I've never made a plugin, so I'm sure this could be plugin-ized, but I didn't pursue that.

    This looks at a value passed in the URL and saved to the variable $val to see if this is a "list" or "thumbnail" view. If it's a list, then the next link is the next one alphabetically, if it's a thumbnail, then the next link is the previous post chronologically.

    There's a little extra complexity here b/c it's also limiting them to be within a single category.

    <?php
    	$category = 'projects'; //limit results only to projects
    	$currentPostTitle = $wpdb->escape($post->post_title); //get the Title of the current post, escape it b/c some titles have special characters
    	$currentPostDate = $post->post_date; //get the date of the current post
    	if ($val == "list") { $threshold = "AND p.post_title > '$currentPostTitle'"; $sortByNext = "p.post_title ASC" ;} else { $threshold = "AND p.post_date < '$currentPostDate'"; $sortByNext = "p.post_date DESC" ;} // evaluate view value and set sort order depending on alpha (list) or chronological (thumb)
    	$querystr = "
    					SELECT p.* from $wpdb->posts p, $wpdb->terms t, $wpdb->term_taxonomy tt, $wpdb->term_relationships tr, $wpdb->terms t2, $wpdb->term_taxonomy tt2, $wpdb->term_relationships tr2
    					WHERE p.id = tr.object_id
    					AND t.term_id = tt.term_id
    					AND tr.term_taxonomy_id = tt.term_taxonomy_id
    					AND p.id = tr2.object_id
    					AND t2.term_id = tt2.term_id
    					AND tr2.term_taxonomy_id = tt2.term_taxonomy_id
    					AND (tt.taxonomy = 'category' AND tt.term_id = t.term_id AND t.slug = '$category')
    					AND p.post_status = 'publish'
    					$threshold
    					ORDER BY $sortByNext
    					LIMIT 1
    					";
    	$pagePostsNext = $wpdb->get_results($querystr, OBJECT);
    ?>
    <?php if ($pagePostsNext): ?>
    	<?php foreach ($pagePostsNext as $postNext): ?>
          <a href="<?php bloginfo('url'); ?>/<?php echo $postNext->post_name; ?>?<?php if (isset($val)) echo 'view=' . $val; ?><?php if (isset($keyword)) echo '&amp;keyword=' . $keyword; ?><?php if (isset($side)) echo "&amp;side=" . "$side";?>">Next project</a>
      <?php endforeach; ?>
    <?php else : ?>
    <?php endif; ?>
  4. jirikai
    Member
    Posted 5 years ago #

    I'm lost.

    I took a look at your code.
    Changed the category to my own and checked to see if it would work. While no PHP errors occured, nothing appeared either.

    if ($val == "list")

    What is this? How do i set the value to list? How does it decide on a value?

    Thank you for your help so far ^^

  5. andrewcmyk
    Member
    Posted 5 years ago #

    I'm also interested in this. I've been searching for a couple hours and couldn't find anything.

  6. jirikai
    Member
    Posted 5 years ago #

    :) Seems I'm not the only one hunting for this function.

Topic Closed

This topic has been closed to new replies.

About this Topic