Php 在不接触wordpress内核的情况下实现wp_get_归档修改的更好方法是什么?

Php 在不接触wordpress内核的情况下实现wp_get_归档修改的更好方法是什么?,php,wordpress,wordpress-theming,Php,Wordpress,Wordpress Theming,从昨天开始,我在Wordpress中为我的博客开始了我的第一个主题或任何类型的开发,在完成了大部分基本内容之后,我正在寻找创建一个归档页面。通过wp_get_archives功能实现的归档页面的默认输出是(文章的)标题 但是,我想显示存档帖子及其各自的发布日期。似乎格式是在general_template.php中硬编码的(真的!!但是我对WordPress的设计理念还不熟悉,所以我要进一步说明这一点) 我是通过直接修改wp includes目录中的general_template.php文件来

从昨天开始,我在Wordpress中为我的博客开始了我的第一个主题或任何类型的开发,在完成了大部分基本内容之后,我正在寻找创建一个归档页面。通过wp_get_archives功能实现的归档页面的默认输出是(文章的)标题

但是,我想显示存档帖子及其各自的发布日期。似乎格式是在general_template.php中硬编码的(真的!!但是我对WordPress的设计理念还不熟悉,所以我要进一步说明这一点)

我是通过直接修改wp includes目录中的general_template.php文件来实现的。我更改了wp\u get\u archives&get\u archives\u link功能(主要代码更改是…)

*wp\u get\u归档文件()
............
$text=strip_标记(应用_过滤器('the_title',$result->post_title,$result->ID));
$text.=“| | |”。日期('F j,Y',标准时间($result->post_date));
*获取归档文件链接()
............
elseif('withdate\u ms'==美元格式){
$text|u片段=分解(“| | |,$text”);
$link\u html=“\t
  • $before•{$text\u片段[1]}$after
  • \n”; }

    这实现了我想要做的。但是,我觉得直接更改核心wordpress文件(特别是对于这种琐碎的东西)不是一种好的做法。我是WP的新手,但我想肯定有一种Wordpress方法可以实现这一点我如何在不触及核心的情况下实现此修改?这种方法是否适用于核心功能的其他更改(对于任何其他集合,如果我将来需要更改)?

    wp\u get\u archives()
    函数复制粘贴到主题的
    functions.php
    文件中,然后重命名它(以避免函数名冲突),并将该函数用作您通常使用的任何位置的替换项
    wp\u get\u archives()

    确保复制整个函数以及该函数内部使用的所有其他函数都可以正常工作


    需要注意的一点是,如果
    wp\u get\u archives()
    将来有任何更新,您必须将这些更改集成到新函数中,或者不进行这些更改,因为这些更新不会对您的函数产生影响。

    您始终可以通过复制粘贴
    wp\u get\u archives()来创建自己的函数
    到主题的
    functions.php
    文件中,然后重命名并使用该文件。我是否需要完全复制粘贴wp\u get\u archives()和get\u archives\u link()并对其进行修改(是否需要更改名称)?此外,这是否保证其他帮助程序函数(如strip\u标记)可以将在环境中可用?这是Wordpress way的最佳做法吗?这是否适用于将来对核心功能的更新更改?是。复制整个函数,重命名它以防止命名冲突,根据您的需要编辑它,并使用该函数获取结果。新函数中及其周围的所有其他函数ns可以正常工作。如果这两个函数将来有核心功能更新,您必须保持函数不变,或者使用更改更新它们。它们不会自动更新自己。将尝试使用该功能。谢谢:)但是,难道没有一种方法可以在没有冗余的情况下扩展这两个函数吗。这当然是一件好事。为什么不使用
    过滤器来修改输出<代码>添加过滤器('get_archives_link',[FUNCTION])参考:
    
    *wp_get_archives() 
        ............
        $text = strip_tags( apply_filters( 'the_title', $result->post_title, $result->ID ) );
        $text .= "|||" . date('F j, Y', strtotime($result->post_date));
    
    *get_archives_link() 
        ............
        elseif ('withdate_ms' == $format) {
            $text_pieces = explode("|||", $text);
            $link_html = "\t<li>$before<a href='$url'>{$text_pieces[0]}</a> &bull; {$text_pieces[1]} $after</li>\n";
        }