Solved

Getting urls of all wordpress posts - wp_get_archives?

Posted on 2011-09-21
16
401 Views
Last Modified: 2012-05-12
I need to get a list of all my Wordpress post's urls, ie:

http://www.mysite.com/postnameone
http://www.mysite.com/postnametwo
http://www.mysite.com/postnamethree

I have found I can use this:

<?php wp_get_archives('type=postbypost&limit=2000&format=custom'); ?>

In a template to get a full list of post titles that are linked to each post, but I don't need a link, I just need a list of the plain text (unlinked) permalink urls, one per line.

Can you show me how to do that?

Thanks,  Chris

0
Comment
Question by:St_Aug_Beach_Bum
  • 7
  • 5
  • 4
16 Comments
 
LVL 70

Expert Comment

by:Jason C. Levine
Comment Utility
Something like:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <p><?php the_permalink() ?></p>
<?php endwhile; else: ?>
   <p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>

Open in new window


should do it

0
 
LVL 23

Expert Comment

by:jeremyjared74
Comment Utility
You might want to wrap them inside of <ul><li> tags so it's easier to make them into a list. I'm not sure you want them to display, but fi you want the actual title, use this:

<div id="all-posts">
  <?php $debut = 0; while(have_posts()) : the_post(); ?>
    <ul>
    <?php $myposts = get_posts('numberposts=-1&offset=$debut'); foreach($myposts as $post) : ?>
      <li>
        <?php the_title(); ?>
      </li>
    <?php endforeach; ?>
    </ul>
  <?php endwhile; ?>
</div>

Open in new window


If you want the URL of the posts, use Jason's code. It will need a little modification though. I believe it would only output the page/post that you open to display the post titles.
0
 

Author Comment

by:St_Aug_Beach_Bum
Comment Utility
hmm, not getting anything, do I need to be 'in the loop' for that, will have to figure that out...
0
 
LVL 70

Expert Comment

by:Jason C. Levine
Comment Utility
>> I believe it would only output the page/post that you open to display the post titles.

Gah.  Oops...
0
 

Author Comment

by:St_Aug_Beach_Bum
Comment Utility
ah, ok, it did work for that, I did get a line that had the url of that page on it, but that one was it :)
0
 
LVL 70

Expert Comment

by:Jason C. Levine
Comment Utility
So you need to combine Jeremy's loop with my interior to get the solution :)

No more late night EE for me...brain hurts

Open in new window

0
 

Author Comment

by:St_Aug_Beach_Bum
Comment Utility
jeremyjared74 - yep, just need the urls :)
0
 
LVL 70

Accepted Solution

by:
Jason C. Levine earned 250 total points
Comment Utility
Placing:

<?php the_permalink() ?>

inside the loop (use li or p tags for structure) should return the list of URLs
0
Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

 

Author Comment

by:St_Aug_Beach_Bum
Comment Utility
I'm confused,

Do you mean in jeremyjared74's loop? Replace 'the_title()' with 'the_permanlink()'?

I don't get any results, just:

-----(page source)----

<div id="all-posts">

      <ul>
------------------------

Here is the code I have on a template page right now:

<?php
/*
Template Name: url-list
*/
?>
<div id="all-posts">
  <?php $debut = 0; while(have_posts()) : the_post(); ?>
    <ul>
    <?php $myposts = get_posts('numberposts=-1&offset=$debut'); foreach($myposts as $post) : ?>
      <li>
        <?php the_permalink(); ?>
      </li>
    <?php endforeach; ?>
    </ul>
  <?php endwhile; ?>
</div>
0
 
LVL 23

Assisted Solution

by:jeremyjared74
jeremyjared74 earned 250 total points
Comment Utility
I think you have it. By combining my custom function with Jason's you should get what you're needing. It's a little late or I'd test it. I haven;t really looked at your latest code, but here's a quick change that should work:

<div id="all-posts">
  <?php $debut = 0; while(have_posts()) : the_post(); ?>
    <ul>
    <?php $myposts = get_posts('numberposts=-1&offset=$debut'); foreach($myposts as $post) : ?>
      <li>
        <?php the_permalink() ?>
      </li>
    <?php endforeach; ?>
    </ul>
  <?php endwhile; ?>
</div>

Open in new window


I'm not after the points, Jason would have eventually worked it out, so I don't require any points. I was only making an observation.

Good Night,
JJ
0
 
LVL 23

Expert Comment

by:jeremyjared74
Comment Utility
I just tested my code, and it's working. I don't know why it's not for you. You don't have the code place in a template with another loop do you?

I just placed the code as is inside of a sidebar I had available. If you don't figure it out, one of us will finish up tomorrow.

Regards,
Jeremy Jared
0
 

Author Comment

by:St_Aug_Beach_Bum
Comment Utility
No, not working. But I'm with you, gotta get some sleep and tackle this again tomorrow.

Thank you for trying to help.
0
 

Author Comment

by:St_Aug_Beach_Bum
Comment Utility
ah, took a look with fresh eyes this morning ;)

I had to adjust the numberposts=-1 to a much higher number. I don't know if it works for you with -1 or if you thought I would know that :)  (I did, come morning!).

jeremyjared74 - do you really not want points, or shall I split them between the two of you?

Thank you very much!
0
 
LVL 23

Expert Comment

by:jeremyjared74
Comment Utility
It's up to you, I'd give most to Jason though. I didn't want to impose on his answers, I just wanted to add some input. You might select on of my answers as assisted solution so it can be seen by others that might search and find this question.

I had to adjust the numberposts=-1 to a much higher number. I don't know if it works for you with -1 or if you thought I would know that
Yeah I assumed you were copy and pasting the code. Sometimes when I'm in a rush I forget to explain important parts of the code. I'm glad you caught it and were able to solve you problem.

Regards,
JJ
0
 
LVL 70

Expert Comment

by:Jason C. Levine
Comment Utility
The right thing to do is give jj the solution and me an assist with more poinks to Jeremy.  His loop is correct, I just used the right function to return a URL.  

Good teamwork, though. :)
0
 

Author Closing Comment

by:St_Aug_Beach_Bum
Comment Utility
Well, thank you both!!!  :)
0

Featured Post

Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

Join & Write a Comment

Part of the Global Positioning System A geocode (https://developers.google.com/maps/documentation/geocoding/) is the major subset of a GPS coordinate (http://en.wikipedia.org/wiki/Global_Positioning_System), the other parts being the altitude and t…
In order to have all security and back ups taken care of, WordPress users can sign up for services with WP Engine.
The purpose of this video is to demonstrate how to reset a WordPress password if you are locked out and cannot reset the password. A typical use would be if you cannot access the email to which WordPress would send the password recovery email to…
This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.

728 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now