在条件语句中理解和使用DID_ACTION()

时间:2016-05-19 作者:Capiedge

我正在自定义主题中使用Genesis框架,但这不是一个“特定于Genesis”的问题。

我需要有条件地填充页面(而不是帖子)的侧栏。条件是检查它是否尚未填充许多其他相关功能(相关新闻、相关事件、用户从后端选择的广告横幅…)。

我需要验证尚未触发的操作包括:genesis_after_sidebar_widget_areagenesis_before_sidebar_widget_area. 我想通过玩did_action().

我正在尝试此功能:

add_action( \'genesis_after_sidebar_widget_area\', \'understanding_did_action\' );
function understanding_did_action() {
    if( did_action( \'genesis_after_sidebar_widget_area\' ) > 0 || did_action( \'genesis_before_sidebar_widget_area\' ) > 0 ) {
        echo \'<h2>TESTING</h2>\';
        echo \'before: \' . did_action( \'genesis_before_sidebar_widget_area\' ) . \'<br/>\';
        echo \'after: \' . did_action( \'genesis_after_sidebar_widget_area\' );
    }
}
我总是在之前得到:1 &之后:1, 即使在侧边栏中没有打印任何内容或操作已触发两次或三次的情况下。

关键是要找到仅当值小于“X”(1、2、3…视情况而定)时才执行函数的方法。

有什么想法吗?谢谢

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

这些行动总是被Genesis框架调用。我的意思是这些都是钩子位置,它们总是由genesis触发,因此任何标记/挂接到这些钩子的函数都将在这些位置调用。。所以永远都是这样1 i、 e.是,执行了动作挂钩。

正如OP正确发现的,使用has_action 而不是did_action 完成了任务。

相关推荐

自定义发布类型的POST_ROW_ACTIONS

我正在使用this 在WordPress Admin中具有重复post函数的代码。但是,当我为自定义帖子类型添加过滤器时,如下所示:add_filter( \'directory_row_actions\', \'rd_duplicate_post_link\', 10, 2 ); (自定义帖子类型的注册名称为directory) - 它不会将其添加到条目标题下的操作行中。当我为帖子或页面执行此操作时,如下所示:add_filter( \'post_row_actions\', \'rd_dup