当自定义帖子类型类别更改时发送电子邮件

时间:2015-03-13 作者:danzo

这是我第一次尝试编写动作挂钩。

我的CPT有4个类别。我试图使WP在类别更改时自动发送电子邮件通知。

我所说的改变是指:假设这篇文章属于“cat1”类。管理员取消选择cat1并选择“cat2”,然后单击“更新”按钮。我不是说在列表中覆盖或附加新类别。

迄今为止我的代码:

add_action(\'set_object_terms\',\'email_when_category_changes\');

function email_when_category_changes(){
       wp_mail( \'[email protected]\', \'Update on CI board\', \'the category changed\' );
}
这里的想法是,作者将收到一封电子邮件,通知他们他们的帖子已从cat1改为cat2。

上述代码的工作原理是,当我单击“更新”时,它会发送一封电子邮件。然而,问题是无论我做什么,它都会发送一封电子邮件。每当我单击“更新”,无论是否有任何更改,它都会发送电子邮件。

我认为set\\u object\\u术语只有在类别更改时才会触发。很明显,我遗漏了一个重要的概念。有人能帮忙吗?

1 个回复
SO网友:TheDeadMedic

使用挂钩added_term_relationshipdeleted_term_relationships. 这些只有在关系发生变化时才会触发,而不是set_object_terms 始终会触发:

function wpse_181090_object_terms_updated( $object_id ) {
    static $did = array(); // This function might fire multiple times for the same object, ensure it only runs once

    if ( ! isset( $did[ $object_id ] ) ) {
        $did[ $object_id ] = true;

        // Your notification code
    }
}

add_action( \'deleted_term_relationships\', \'wpse_181090_object_terms_updated\' );
add_action( \'added_term_relationship\',    \'wpse_181090_object_terms_updated\' );

结束

相关推荐

如何获取wp_Dropdown_Categories的值

我正在制作一个小部件,我使用了wp_dropdown_categories() 功能。我搞不懂的是如何从下拉列表中获取所选值。所选变量存储在哪个变量中?$args = array(\'show_option_none\' => \'No Category\',\'hide_empty\' => 0); wp_dropdown_categories( $args );