I am trying to get the page to list all my posts (post type = post) in archive.

I can do this with custom post types, with get_post_type_archive_link(), but using get_post_type_archive_link('post') to get the page url of all posts doesn't work the same way.

Also using get_permalink() or get_permalink( get_option( 'page_for_posts' ) ) returns only the link of one post.


I would like to get a link like www.example.com/posts/ or other, in a similar way as the custom post type, when using get_post_type_archive_link('news'), retrieves www.example.com/news/.

Can I get a list of posts other than in the home page? Is this possible?

Thanks for the help!

  • get_post_type_archive_link works with post as of several versions ago. – Milo May 5 '17 at 15:55
  • Possible duplicate of Get the blog page URL set in Options – Milo May 5 '17 at 15:56
  • I had already check that question, but .Well, for some reason the get_post_type_archive_link – user38561 May 5 '17 at 17:19
  • You can also look at get_post_type_archive_link source code to see how it gets that link in the case of post, it incorporates your other example. – Milo May 5 '17 at 17:24
  • @Milo thanks for the reply and link, but for some reason the get_post_type_archive_link is returning the URL of the root of website (www.example.com) and not something like (www.example.com/news/) . Has that suppose to return that? I can to distinguis from the front_page or home page! At the moment I have made a workaround using add_query_arg but probably is a good practice to use WP core functions dedicated for this. I have the WordPress version 4.7.3. – user38561 May 5 '17 at 17:35

I use a shortcode:

function shortcode_article_list() {
  $posts_array = get_posts( array('posts_per_page' => -1, 'orderby' => 'date', 'order' => 'DESC', 'post_type' => 'post', 'post_status' => 'publish') );
  $output = '<ul>';
  foreach ($posts_array as $post) {
    $a = explode(' ', $post->post_date);
    $output .= '<li><a href="' . home_url('/') . $post->post_name . '.html">' . $post->post_title . '</a> (' . $a[0] . ')</li>';
  $output .= '</ul>';
  return $output;
add_shortcode('article_list', 'shortcode_article_list');

Perhaps there's something you can use from it.

  • Thanks for the reply! But unfortunately this is not what I need! Probably I didn't explain my self very well (I added a example to the question), but I need to get the link. Example: www.example.com/posts/ in the same way as the get for custom post types www.example.com/custom_post_type/ . – user38561 May 5 '17 at 14:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.