如果自定义字段存在,则为Add_action和Remove_action

时间:2014-12-16 作者:markratledge

我知道这可能与Genesis(高级框架)无关,但对于通用WordPress,这与运行remove_actionadd_action 取决于是否存在自定义字段。我没有看到我做错的简单事情。

我要做的是显示默认的面包屑,除非存在自定义字段,如果存在,则显示自定义字段的内容。

为什么不

remove_action( \'genesis_before_loop\', \'genesis_do_breadcrumbs\' ); add_action(\'genesis_before_loop\', \'customfield_breadcrumbs\');

存在自定义字段时激发,删除默认面包屑,添加customfield_breadcrumbs 然后echo 我的自定义字段?

The full function:

function customfield_breadcrumbs() {

global $post;

$crumb = get_post_meta($post->ID, \'custom_breadcrumb\', true); 

    if ($crumb) {

remove_action( \'genesis_before_loop\', \'genesis_do_breadcrumbs\' );
add_action(\'genesis_before_loop\', \'customfield_breadcrumbs\');

echo \'<div class="breadcrumb">\';
echo get_post_meta($post->ID, \'custom_breadcrumb\', $single = true);
echo \'</div>\';

    }
}
这将正确输出自定义字段的html(来自$post和$crumb),但我需要显示默认的面包屑,除非有自定义字段:

 function customfield_breadcrumbs() {

    global $post;

    $crumb = get_post_meta($post->ID, \'custom_breadcrumb\', true); 

        if ($crumb) {

    echo \'<div class="breadcrumb">\';
    echo get_post_meta($post->ID, \'custom_breadcrumb\', $single = true);
    echo \'</div>\';

        }
    }
这是Genesis的核心面包屑功能:

function genesis_breadcrumb( $args = array() ) {

    global $_genesis_breadcrumb;

    if ( ! $_genesis_breadcrumb )
        $_genesis_breadcrumb = new Genesis_Breadcrumb;

    $_genesis_breadcrumb->output( $args );

}

add_action( \'genesis_before_loop\', \'genesis_do_breadcrumbs\' );
它们由Genesis>>主题设置中的设置进行配置:

enter image description here

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

正如我在评论中提到的,我不清楚您的代码是如何工作的。看起来您正在添加一个操作来调用要使用该操作调用的函数中的函数。如果函数外部没有任何东西调用它,它将永远不会运行。

add_action( \'template_redirect\', \'check_breadcrumb_condition\' );

function check_breadcrumb_condition(){
    global $post;
    $crumb = get_post_meta($post->ID, \'custom_breadcrumb\', true); 
    if ($crumb) {
        remove_action( \'genesis_before_loop\', \'genesis_do_breadcrumbs\' );
        add_action( \'genesis_before_loop\', \'customfield_breadcrumbs\' );
    }
}

function customfield_breadcrumbs() {
    global $post;
    echo \'<div class="breadcrumb">\';
    echo get_post_meta($post->ID, \'custom_breadcrumb\', true);
    echo \'</div>\';
}

结束

相关推荐

Custom Post Row Actions

我偶然发现this question 在写这个问题的时候。我有一个问题是关于这个问题的。我发现你用的是get_delete_post_link 筛选为我的操作创建一个新的url(或一个类似的函数——在任何情况下,我都会将该函数与布尔值一起使用)。唯一的问题是,I don\'t know how to capture the event now. 考虑到我在谷歌上找不到很多关于行后操作的例子,我将不胜感激-/public function _wp_filter_get_delete_post_link( $

如果自定义字段存在,则为Add_action和Remove_action - 小码农CODE - 行之有效找到问题解决它

如果自定义字段存在,则为Add_action和Remove_action

时间:2014-12-16 作者:markratledge

我知道这可能与Genesis(高级框架)无关,但对于通用WordPress,这与运行remove_actionadd_action 取决于是否存在自定义字段。我没有看到我做错的简单事情。

我要做的是显示默认的面包屑,除非存在自定义字段,如果存在,则显示自定义字段的内容。

为什么不

remove_action( \'genesis_before_loop\', \'genesis_do_breadcrumbs\' ); add_action(\'genesis_before_loop\', \'customfield_breadcrumbs\');

存在自定义字段时激发,删除默认面包屑,添加customfield_breadcrumbs 然后echo 我的自定义字段?

The full function:

function customfield_breadcrumbs() {

global $post;

$crumb = get_post_meta($post->ID, \'custom_breadcrumb\', true); 

    if ($crumb) {

remove_action( \'genesis_before_loop\', \'genesis_do_breadcrumbs\' );
add_action(\'genesis_before_loop\', \'customfield_breadcrumbs\');

echo \'<div class="breadcrumb">\';
echo get_post_meta($post->ID, \'custom_breadcrumb\', $single = true);
echo \'</div>\';

    }
}
这将正确输出自定义字段的html(来自$post和$crumb),但我需要显示默认的面包屑,除非有自定义字段:

 function customfield_breadcrumbs() {

    global $post;

    $crumb = get_post_meta($post->ID, \'custom_breadcrumb\', true); 

        if ($crumb) {

    echo \'<div class="breadcrumb">\';
    echo get_post_meta($post->ID, \'custom_breadcrumb\', $single = true);
    echo \'</div>\';

        }
    }
这是Genesis的核心面包屑功能:

function genesis_breadcrumb( $args = array() ) {

    global $_genesis_breadcrumb;

    if ( ! $_genesis_breadcrumb )
        $_genesis_breadcrumb = new Genesis_Breadcrumb;

    $_genesis_breadcrumb->output( $args );

}

add_action( \'genesis_before_loop\', \'genesis_do_breadcrumbs\' );
它们由Genesis>>主题设置中的设置进行配置:

enter image description here

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

正如我在评论中提到的,我不清楚您的代码是如何工作的。看起来您正在添加一个操作来调用要使用该操作调用的函数中的函数。如果函数外部没有任何东西调用它,它将永远不会运行。

add_action( \'template_redirect\', \'check_breadcrumb_condition\' );

function check_breadcrumb_condition(){
    global $post;
    $crumb = get_post_meta($post->ID, \'custom_breadcrumb\', true); 
    if ($crumb) {
        remove_action( \'genesis_before_loop\', \'genesis_do_breadcrumbs\' );
        add_action( \'genesis_before_loop\', \'customfield_breadcrumbs\' );
    }
}

function customfield_breadcrumbs() {
    global $post;
    echo \'<div class="breadcrumb">\';
    echo get_post_meta($post->ID, \'custom_breadcrumb\', true);
    echo \'</div>\';
}

相关推荐

Too many actions/filters!

这里是wordpress的新成员。动作/过滤器的概念本身并不难理解。令我不知所措的是大量可用的操作和过滤器。当我阅读教程/指南时,他们会说“只需将此功能添加到wp\\U head操作或after\\U setup\\u主题”。如果没有这些教程,我究竟如何知道将该函数与该操作挂钩?作为一个初学者,我怎么会知道什么是合适的操作?有没有关于如何导航的建议?谢谢