过滤和修改二十一七中的条目-页脚链接

时间:2018-04-10 作者:killalad

我目前正在使用“2017儿童”主题,我需要modify the link on single post page below the article. 他的href正在转发到帖子的类别。

我对wp中的过滤器非常陌生,所以我真的不知道在这种情况下应该使用哪个过滤器。我也想知道,我如何知道这些过滤器,或者在哪里可以找到这些过滤器?

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

显示在单个贴子页面内容下方的您所引用的类别链接未添加过滤器。它通过一个名为twentyseventeen_entry_footer().

如果查看主题文件,可以在文件的第59行找到函数:

/wp-content/themes/twentyseventeen/inc/template-tags.php

这是twentyseventeen_entry_footer() 功能代码:

if ( ! function_exists( \'twentyseventeen_entry_footer\' ) ) :
    /**
     * Prints HTML with meta information for the categories, tags and comments.
     */
    function twentyseventeen_entry_footer() {

        /* translators: used between list items, there is a space after the comma */
        $separate_meta = __( \', \', \'twentyseventeen\' );

        // Get Categories for posts.
        $categories_list = get_the_category_list( $separate_meta );

        // Get Tags for posts.
        $tags_list = get_the_tag_list( \'\', $separate_meta );

        // We don\'t want to output .entry-footer if it will be empty, so make sure its not.
        if ( ( ( twentyseventeen_categorized_blog() && $categories_list ) || $tags_list ) || get_edit_post_link() ) {

            echo \'<footer class="entry-footer">\';

            if ( \'post\' === get_post_type() ) {
                if ( ( $categories_list && twentyseventeen_categorized_blog() ) || $tags_list ) {
                    echo \'<span class="cat-tags-links">\';

                        // Make sure there\'s more than one category before displaying.
                    if ( $categories_list && twentyseventeen_categorized_blog() ) {
                        echo \'<span class="cat-links">\' . twentyseventeen_get_svg( array( \'icon\' => \'folder-open\' ) ) . \'<span class="screen-reader-text">\' . __( \'Categories\', \'twentyseventeen\' ) . \'</span>\' . $categories_list . \'</span>\';
                    }

                    if ( $tags_list && ! is_wp_error( $tags_list ) ) {
                        echo \'<span class="tags-links">\' . twentyseventeen_get_svg( array( \'icon\' => \'hashtag\' ) ) . \'<span class="screen-reader-text">\' . __( \'Tags\', \'twentyseventeen\' ) . \'</span>\' . $tags_list . \'</span>\';
                    }

                    echo \'</span>\';
                }
            }

            twentyseventeen_edit_link();

            echo \'</footer> <!-- .entry-footer -->\';
        }
    }
endif;
正如您应该从原始功能代码中看到的,第一行是:

if ( ! function_exists( \'twentyseventeen_entry_footer\' ) ) :

因此,如果函数已经存在,父主题中的代码将被忽略。由于WordPress的工作方式,它会加载子主题函数。首先是php文件,在父主题之前。

为了修改此代码,您需要复制或创建自己的代码twentyseventeen_entry_footer() 在孩子主题中发挥作用functions.php 文件(无function_exists() 行,没有最终endif; 行)。

因此,通过创建twentyseventeen_entry_footer() 函数,这将覆盖父主题函数的默认功能。

Update 要使用模板替代完全删除此类别链接,请执行以下操作:

在线#217个主题中的24个single.php 文件中,您应该看到以下代码:

get_template_part( \'template-parts/post/content\', get_post_format() );

如果随后查看上一行中引用的文件夹:

/wp-content/themes/twentyseventeen/template-parts/post/

您将看到各种post格式的各种“内容”PHP文件。正常帖子的默认设置为content.php

只需将此文件复制到名为/template-parts/post/ 然后删除引用twentyseventeen_entry_footer() 功能(第73至77行):

<?php
if ( is_single() ) {
    twentyseventeen_entry_footer();
}
?>
可以对父主题根文件夹或/template-parts/ 文件夹只需将文件复制到相同文件夹结构中的子主题。

注意。然而,在这种特殊情况下,只创建一个空/空白可能更简单twentyseventeen_entry_footer() 子主题中的函数-这取决于您是否仍希望此函数适用于其他帖子类型或帖子格式(如果它在其他地方使用)。。。

SO网友:Tedinoz

我来晚了,但我刚刚发现上面建议的方法不推荐。

请参阅此帖子(“get_parent_theme_file_path vs. get_template_directory)和本文(“”get_theme_file_uri and get_theme_file_path”)(在帖子中提到)。他们都是布拉沃克尔(Bravokeyl)的作者。

如上所述,post页脚的显示由“/wp content/themes/TwentySeven/inc/template tags”第59行的“TwentySeven\\u entry\\u footer”功能驱动。php’。困扰我的问题是……”系统如何知道激活此功能。如果你看一下父函数。php“lines#566-#586,您可以看到“inc”文件夹中的所有文件都是“必需的”。这是激活“Twenty177\\u entry\\u footer”的触发器。用于“require”inc文件夹文件的方法使用了一个名为get_parent_theme_file_path“。

Bravokeyl对函数的作用及其原因进行了出色的讨论。还有一个示例说明了如何/应该将对包含文件的控制从父主题移动到子主题。

在我的例子中,我在我的子主题中创建了一个新文件夹(inc),并复制了父模板标记。将php复制到子项中。这是我的模板标记代码。php。它起到了治疗作用,比建议的替代品更容易、更可靠。

add_filter(\'parent_theme_file_path\',\'twentyseventeen_parent_template_tags\',10,2);
function twentyseventeen_parent_template_tags($path,$file){
    if(\'inc/template-tags.php\' == $file) {
        $gsd=get_stylesheet_directory();
        $file = \'inc/template-tags.php\';
        $path = $gsd."/".$file;
 }
 return $path;
}

结束

相关推荐

在非文档挂接上调用Apply_Filters

我一直在努力学习如何编写插件,我认为最好的方法是查看其他插件。我在看这一行和第一行/** * Plugin Name: Media Library Categories * Plugin URI: http://wordpress.org/plugins/wp-media-library-categories/ * Description: Adds the ability to use categories in the media library. * Vers

过滤和修改二十一七中的条目-页脚链接 - 小码农CODE - 行之有效找到问题解决它

过滤和修改二十一七中的条目-页脚链接

时间:2018-04-10 作者:killalad

我目前正在使用“2017儿童”主题,我需要modify the link on single post page below the article. 他的href正在转发到帖子的类别。

我对wp中的过滤器非常陌生,所以我真的不知道在这种情况下应该使用哪个过滤器。我也想知道,我如何知道这些过滤器,或者在哪里可以找到这些过滤器?

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

显示在单个贴子页面内容下方的您所引用的类别链接未添加过滤器。它通过一个名为twentyseventeen_entry_footer().

如果查看主题文件,可以在文件的第59行找到函数:

/wp-content/themes/twentyseventeen/inc/template-tags.php

这是twentyseventeen_entry_footer() 功能代码:

if ( ! function_exists( \'twentyseventeen_entry_footer\' ) ) :
    /**
     * Prints HTML with meta information for the categories, tags and comments.
     */
    function twentyseventeen_entry_footer() {

        /* translators: used between list items, there is a space after the comma */
        $separate_meta = __( \', \', \'twentyseventeen\' );

        // Get Categories for posts.
        $categories_list = get_the_category_list( $separate_meta );

        // Get Tags for posts.
        $tags_list = get_the_tag_list( \'\', $separate_meta );

        // We don\'t want to output .entry-footer if it will be empty, so make sure its not.
        if ( ( ( twentyseventeen_categorized_blog() && $categories_list ) || $tags_list ) || get_edit_post_link() ) {

            echo \'<footer class="entry-footer">\';

            if ( \'post\' === get_post_type() ) {
                if ( ( $categories_list && twentyseventeen_categorized_blog() ) || $tags_list ) {
                    echo \'<span class="cat-tags-links">\';

                        // Make sure there\'s more than one category before displaying.
                    if ( $categories_list && twentyseventeen_categorized_blog() ) {
                        echo \'<span class="cat-links">\' . twentyseventeen_get_svg( array( \'icon\' => \'folder-open\' ) ) . \'<span class="screen-reader-text">\' . __( \'Categories\', \'twentyseventeen\' ) . \'</span>\' . $categories_list . \'</span>\';
                    }

                    if ( $tags_list && ! is_wp_error( $tags_list ) ) {
                        echo \'<span class="tags-links">\' . twentyseventeen_get_svg( array( \'icon\' => \'hashtag\' ) ) . \'<span class="screen-reader-text">\' . __( \'Tags\', \'twentyseventeen\' ) . \'</span>\' . $tags_list . \'</span>\';
                    }

                    echo \'</span>\';
                }
            }

            twentyseventeen_edit_link();

            echo \'</footer> <!-- .entry-footer -->\';
        }
    }
endif;
正如您应该从原始功能代码中看到的,第一行是:

if ( ! function_exists( \'twentyseventeen_entry_footer\' ) ) :

因此,如果函数已经存在,父主题中的代码将被忽略。由于WordPress的工作方式,它会加载子主题函数。首先是php文件,在父主题之前。

为了修改此代码,您需要复制或创建自己的代码twentyseventeen_entry_footer() 在孩子主题中发挥作用functions.php 文件(无function_exists() 行,没有最终endif; 行)。

因此,通过创建twentyseventeen_entry_footer() 函数,这将覆盖父主题函数的默认功能。

Update 要使用模板替代完全删除此类别链接,请执行以下操作:

在线#217个主题中的24个single.php 文件中,您应该看到以下代码:

get_template_part( \'template-parts/post/content\', get_post_format() );

如果随后查看上一行中引用的文件夹:

/wp-content/themes/twentyseventeen/template-parts/post/

您将看到各种post格式的各种“内容”PHP文件。正常帖子的默认设置为content.php

只需将此文件复制到名为/template-parts/post/ 然后删除引用twentyseventeen_entry_footer() 功能(第73至77行):

<?php
if ( is_single() ) {
    twentyseventeen_entry_footer();
}
?>
可以对父主题根文件夹或/template-parts/ 文件夹只需将文件复制到相同文件夹结构中的子主题。

注意。然而,在这种特殊情况下,只创建一个空/空白可能更简单twentyseventeen_entry_footer() 子主题中的函数-这取决于您是否仍希望此函数适用于其他帖子类型或帖子格式(如果它在其他地方使用)。。。

SO网友:Tedinoz

我来晚了,但我刚刚发现上面建议的方法不推荐。

请参阅此帖子(“get_parent_theme_file_path vs. get_template_directory)和本文(“”get_theme_file_uri and get_theme_file_path”)(在帖子中提到)。他们都是布拉沃克尔(Bravokeyl)的作者。

如上所述,post页脚的显示由“/wp content/themes/TwentySeven/inc/template tags”第59行的“TwentySeven\\u entry\\u footer”功能驱动。php’。困扰我的问题是……”系统如何知道激活此功能。如果你看一下父函数。php“lines#566-#586,您可以看到“inc”文件夹中的所有文件都是“必需的”。这是激活“Twenty177\\u entry\\u footer”的触发器。用于“require”inc文件夹文件的方法使用了一个名为get_parent_theme_file_path“。

Bravokeyl对函数的作用及其原因进行了出色的讨论。还有一个示例说明了如何/应该将对包含文件的控制从父主题移动到子主题。

在我的例子中,我在我的子主题中创建了一个新文件夹(inc),并复制了父模板标记。将php复制到子项中。这是我的模板标记代码。php。它起到了治疗作用,比建议的替代品更容易、更可靠。

add_filter(\'parent_theme_file_path\',\'twentyseventeen_parent_template_tags\',10,2);
function twentyseventeen_parent_template_tags($path,$file){
    if(\'inc/template-tags.php\' == $file) {
        $gsd=get_stylesheet_directory();
        $file = \'inc/template-tags.php\';
        $path = $gsd."/".$file;
 }
 return $path;
}

相关推荐

添加到数组并通过do_action/Apply_Filters传递它

作为练习,我正在使用PHPclass to add meta boxes 我在GitHub上找到了。我只是复制了代码,现在我正在玩它来理解它。其工作原理如下:包含该类的文件包含在init中。在该文件内部,但在类外部,有一个空数组$meta_boxes 已初始化之后,使用apply_filters. 我猜是apply_filters 使用而不是do_action 因为后者不返回任何内容——$meta_boxes = apply_filters( \'cmb_meta_boxes\', $meta_boxes