覆盖WordPress中主题的wp_get_archives

时间:2010-01-12 10:13:18

标签: wordpress-theming wordpress

我正在通过自定义Worpress默认主题。我遇到了格式化存档链接的问题。

默认主题使用wp_get_archives中定义的general-template.php函数。该函数的输出是可自定义的,但对我来说不够可定制。

我可以通过基本上重新实现我functions.php文件中的特定功能来实现我想要做的所有事情,但我犹豫不决,因为它在Wordpress更新时引入了回归问题。 wp_get_archives执行所有较低级别的操作,例如构造数据库查询并缓存数据库结果。如果可以的话,我真的想避免这样做。

另一种向我敞开的方式是创建get_archives_link过滤器,此时链接HTML已经格式化,我需要运行一堆正则表达式来理解它。这似乎完全是向后退的,因为它会完全扼杀性能。

这正是我想要的输出:

<li><a href="/year/01">JAN</a></li>
<li class="current"><a href="/year/02">FEB</a></li>
<li>MAR</li> <!--no blog entries this month-->
...

据我所知wp_get_archives有锚的硬编码文本:

$text = sprintf(__('%1$s %2$d'), $wp_locale->get_month($arcresult->month), $arcresult->year);

然后,这是一个添加没有帖子的月份的问题,我更愿意在不解析文本的情况下这样做。然后我需要添加当前类(当URL类似于... / 2009/12时)。

我实际上有一个使用wp_get_archives副本的解决方案。这是做事的方式,我是否担心什么?

编辑我想真正的问题是你可以为Wordpress主题编写你的SQL吗?如果是,那么这样做的最佳做法是什么。

1 个答案:

答案 0 :(得分:1)

如果您在活动主题的functions.php文件中定义它,通常不会出现回归问题。

但是,更改默认主题时并非如此。如果您是通过上传整个wordpress源来升级Wordpress,它将覆盖functions.php。

要解决此问题,请复制包含默认主题的整个文件夹。在新副本中,编辑style.css并将第2行(主题名称)更改为新的主题名称。

Theme Name: WordPress Default

Wordpress现在会看到一个额外的主题,您可以根据自己的内容进行编辑。