这些行是多余的:
$IDOutsideLoop = $post->ID;
global $post;
 你不需要它们。试一下
var_dump($post->ID); 您将看到变量已经可用。
现在,从法典中:
此函数displays 基于日期的存档列表。此标记可以在模板中的任何位置使用。
默认情况下,wp_list_archives() 回显内容。你的$myposts 未设置变量。像这样修改代码。。。
$args = array(
  \'type\' => \'alpha\',
  \'echo\' => false,
);
$myposts = wp_get_archives($args);
 。。。将修复该问题,但您得到的是字符串,而不是可以迭代的数组。和
wp_get_archives() 默认情况下已生成HTML列表。
遗憾的是,可用于操作输出的过滤器非常有限。你需要去冒险regex 在标记上,模式将随permalink结构而改变,或者您可以基于url对帖子进行资源密集型搜索:
function alter_list_output_wpse_190357($link) {
  global $post;
  $pat = "|(<li[^>]*>).* href=\'([^\']*)\'(.*>)|";
  preg_match($pat,$link,$matches);
  $id = url_to_postid($matches[2]);
  if ($post->ID === $id) {
    $link = preg_replace($pat,"<li style=\\"font-weight:bold\\"><a href=\'$2\' $3",$link);
  }
  return $link;
}
add_filter( \'get_archives_link\', \'alter_list_output_wpse_190357\' );
 您最好使用
WP_Query 或
get_posts 正如TomJ Nowell在回答中已经提到的,但我想解释一下这个项目。