如何在没有任何标记的情况下获得POST档案URL列表?

时间:2020-05-15 作者:Luca Reghellin

我正在使用wp_get_archives 但我无法在链接中预先添加任何文本。我想要这样的代码:

<a href="archive link">[my custom prepend] 2020<a/>
但“before”选项将在<a> 标签

当前代码如下:

$archives = wp_get_archives(array(
  \'type\' => \'yearly\'
  ,\'echo\' => false
  ,\'format\' => \'custom\'
  ,\'before\' => \'News\'
));
所以我真的很想得到一个只有年份和URL的列表,没有任何标记,所以我可以自己构建它。因此可能没有wp_get_archives().

最好是使用一个简单的数组,如:

array(
   array(\'year\' => 2020, \'url\' => \'https://www.....\')
)
如何操作?

2 个回复
最合适的回答,由SO网友:Luca Reghellin 整理而成

我想这样做:

首先,简单地计算年份:

// this is a multipurpose function I made, and it\'s quite self explanatory
function get_years($post_type, $order = "ASC", $exclude = array(), $future = true, $taxonomy = null, $term = null){
  global $wpdb;
  $type = ($post_type) ? $post_type : \'post\';
  $status = ($future) ? " (\'publish\', \'future\') " : " (\'publish\') ";
  $exclude = (!empty($exclude)) ? " AND YEAR(post_date) NOT IN (" . implode(\',\',$exclude) . ") " : "";

  return $wpdb->get_results($wpdb->prepare("
    SELECT YEAR(post_date) AS `y`, count(ID) as posts_count
    FROM $wpdb->posts p
      INNER JOIN $wpdb->term_relationships rel ON p.ID = rel.object_id
      INNER JOIN $wpdb->term_taxonomy tt ON tt.term_taxonomy_id = rel.term_taxonomy_id
      INNER JOIN $wpdb->terms t ON tt.term_id = t.term_id
    WHERE
      p.post_type = %s
      AND tt.taxonomy = %s
      AND t.slug = %s
      AND post_status IN " . $status . "
      $exclude
    GROUP BY y
    ORDER BY post_date " . $order,
    $post_type,
    $taxonomy,
    $term
  ),OBJECT_K);
}
然后,通过这些年来的cicle和建立permalinks:

get_year_link($year); // this is wp. 
它适用于帖子,否则可以通过更“手动”的方式构建类似的内容:

home_url(user_trailingslashit(\'write some path here\' . $year));

SO网友:Bob

我想建议创建一个正则表达式来解析它this comment 在Wordpress wp\\u get\\u archives()文档中,似乎有人比我们先到了那里。

相关推荐

permalinks issue and archives

我对运行在WP 3.3上的一个站点有一个问题,当我们通过“/%post\\u id%/%postname%/”使永久链接成为任何内容时,归档页面会断开并变成404。经过一些研究,我明白了为什么从性能的角度来看,这不是一个好的做法,所以我尝试了建议的备选方案:“/%year%/%postname%/”和“/%post\\u id%/%postname%/”这两个建议都有效,只是只有使用post\\u id的建议,归档URL才会变成“/date/2012/11/”,并被找到。根据permalink的任何其他建