这些行是多余的:
$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在回答中已经提到的,但我想解释一下这个项目。