如何删除由Genesis的子主题添加的操作

时间:2018-09-07 作者:Aerendir

我为《创世纪》开发了一个儿童主题,在其上添加了引导程序。

在这个儿童主题的核心部分,我编辑了类别在帖子中的显示方式,将其置于标题上方。

现在,我想再次删除该操作,但它似乎不起作用。

这是理论,下面我用代码写了更多的东西。

PRACTICALLY

我有文件src/lib/post.php 那个adds the action shq_genestrap_post_meta_categories:

function shq_genestrap_post_meta_categories() {

    $filtered = apply_filters( \'shq_genestrap_post_meta_categories\', \'[post_categories]\' );

    if ( false == trim( $filtered ) ) {
        return;
    }

    // Remove the label and commas
    $filtered = str_replace([__( \'Filed Under: \', \'genesis\' ), \', \'], \'\', $filtered);

    genesis_markup( [
        \'open\'    => \'<p %s>\',
        \'close\'   => \'</p>\',
        \'content\' => genesis_strip_p_tags( $filtered ),
        \'context\' => \'entry-meta-categories\',
    ] );
}
add_filter( \'shq_genestrap_post_meta_categories\', \'do_shortcode\', 20 );
add_action( \'genesis_entry_header\', \'shq_genestrap_post_meta_categories\', 9 );
remove_action( \'genesis_after_post_content\', \'genesis_post_meta\' );
如您所见,我添加了自定义函数genesis_post_meta 然后我取消了Genesis的动作genesis_post_meta.

现在,从文件中src/functions.php 我想删除该操作shq_genestrap_post_meta_categories 我之前添加了:

remove_action( \'genesis_entry_header\', \'shq_genestrap_post_meta_categories\', 9 );
但这行不通。

WHY AM I DOING THIS

最终目标是在top Genesis上提供引导,因此src/lib 不应修改:这样,当我更新主存储库时,可以更新子主题。

为了进一步自定义子主题,我想使用文件src/functions.php 存储库中从未更新的。

如果有一天我更新文件src/lib/post.php 将文件从主存储库复制到主题的自定义版本以及通过src/functions.php 文件将继续工作。

但是,如上所述,我无法删除中的文件设置的操作src/lib.

CONCLUSIONS AND QUESTION (AGAIN)

我添加操作shq_genestrap_post_meta_categories 在里面src/lib/post.php.

那么我想取消这个动作shq_genestrap_post_meta_categories 从文件中src/functions.php 但这不起作用:

// src/function.php

remove_action( \'genesis_entry_header\', \'shq_genestrap_post_meta_categories\', 9 );

How can I remove the action added in src/lib/post.php from the file src/functions.php?

1 个回复
SO网友:Aerendir

感谢Dan发表了我在Google上找到的一篇有用的帖子,但没有引起应有的注意,解决方案如下:

function my_remove() {
    remove_action( \'genesis_entry_header\', \'shq_genestrap_post_meta_categories\', 9 );
}
add_action(\'genesis_entry_header\', \'my_remove\', 8);
使用优先级9 在里面add_action() 不起作用:我必须设置一个比用于添加要删除的操作的优先级低的优先级。

无论如何,我不明白为什么低优先级有效:这似乎违反直觉。

关于这一点,我提出了另一个问题:I don\'t understand why I need a lower priority to remove an action with a higher priority to make it work

欢迎任何愿意回复的人!

结束
如何删除由Genesis的子主题添加的操作 - 小码农CODE - 行之有效找到问题解决它

如何删除由Genesis的子主题添加的操作

时间:2018-09-07 作者:Aerendir

我为《创世纪》开发了一个儿童主题,在其上添加了引导程序。

在这个儿童主题的核心部分,我编辑了类别在帖子中的显示方式,将其置于标题上方。

现在,我想再次删除该操作,但它似乎不起作用。

这是理论,下面我用代码写了更多的东西。

PRACTICALLY

我有文件src/lib/post.php 那个adds the action shq_genestrap_post_meta_categories:

function shq_genestrap_post_meta_categories() {

    $filtered = apply_filters( \'shq_genestrap_post_meta_categories\', \'[post_categories]\' );

    if ( false == trim( $filtered ) ) {
        return;
    }

    // Remove the label and commas
    $filtered = str_replace([__( \'Filed Under: \', \'genesis\' ), \', \'], \'\', $filtered);

    genesis_markup( [
        \'open\'    => \'<p %s>\',
        \'close\'   => \'</p>\',
        \'content\' => genesis_strip_p_tags( $filtered ),
        \'context\' => \'entry-meta-categories\',
    ] );
}
add_filter( \'shq_genestrap_post_meta_categories\', \'do_shortcode\', 20 );
add_action( \'genesis_entry_header\', \'shq_genestrap_post_meta_categories\', 9 );
remove_action( \'genesis_after_post_content\', \'genesis_post_meta\' );
如您所见,我添加了自定义函数genesis_post_meta 然后我取消了Genesis的动作genesis_post_meta.

现在,从文件中src/functions.php 我想删除该操作shq_genestrap_post_meta_categories 我之前添加了:

remove_action( \'genesis_entry_header\', \'shq_genestrap_post_meta_categories\', 9 );
但这行不通。

WHY AM I DOING THIS

最终目标是在top Genesis上提供引导,因此src/lib 不应修改:这样,当我更新主存储库时,可以更新子主题。

为了进一步自定义子主题,我想使用文件src/functions.php 存储库中从未更新的。

如果有一天我更新文件src/lib/post.php 将文件从主存储库复制到主题的自定义版本以及通过src/functions.php 文件将继续工作。

但是,如上所述,我无法删除中的文件设置的操作src/lib.

CONCLUSIONS AND QUESTION (AGAIN)

我添加操作shq_genestrap_post_meta_categories 在里面src/lib/post.php.

那么我想取消这个动作shq_genestrap_post_meta_categories 从文件中src/functions.php 但这不起作用:

// src/function.php

remove_action( \'genesis_entry_header\', \'shq_genestrap_post_meta_categories\', 9 );

How can I remove the action added in src/lib/post.php from the file src/functions.php?

1 个回复
SO网友:Aerendir

感谢Dan发表了我在Google上找到的一篇有用的帖子,但没有引起应有的注意,解决方案如下:

function my_remove() {
    remove_action( \'genesis_entry_header\', \'shq_genestrap_post_meta_categories\', 9 );
}
add_action(\'genesis_entry_header\', \'my_remove\', 8);
使用优先级9 在里面add_action() 不起作用:我必须设置一个比用于添加要删除的操作的优先级低的优先级。

无论如何,我不明白为什么低优先级有效:这似乎违反直觉。

关于这一点,我提出了另一个问题:I don\'t understand why I need a lower priority to remove an action with a higher priority to make it work

欢迎任何愿意回复的人!

相关推荐

wp_list_tables bulk actions

如何在扩展的WP\\U List\\U表中触发批量操作。我一直在将以下批量操作添加到may table的选择框中,但在Apply上不会发生任何事情下面是我如何添加批量操作的function get_bulk_actions() { $actions = array( \'delete\' => \'Delete\', \'parsing\' => \'Parsen\' );