已将函数添加到挂钩“new_to_Publish”而不是执行-自定义插件

时间:2016-12-14 作者:Ceds

我创建了一个自定义插件,可以根据帖子的内容/类别发送特定的电子邮件,但在尝试这样做的同时,我在发送基本电子邮件时遇到了一些问题。我是否连接到了错误的函数?当我发布帖子时,什么都没发生。

<?php
/**
* Plugin Name: Conditional Emailing
* Description: Sends emails based on categories.
* Version: 1.0
* Author: Ceds
*/

add_action( \'new_to_publish\', \'conditional_email\', 10, 0);

function conditional_email() {
  wp_mail(\'[email protected]\',\'test\',\'test\');
}

?>
我做错了什么?

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

您需要添加参数$old_status$new_status 到函数。

  function conditional_email( $old_status, $new_status) {
   wp_mail(\'[email protected]\',\'test\',\'test\');
  }
您将在示例中看到这一点here

希望以后可以用!

SO网友:ocReaper

代码的问题是您传递了零个参数,但是documentation 明确规定:

必须指定参数的数量do_action() 应传递给回调函数。

另一件值得注意的事情是:如果单击new post, 键入标题并立即点击publish 按钮只有在等待WordPress生成帖子的URL时,它才会运行!这是因为DOING_AUTOSAVE 核心功能中的条件。

下面是为您更正的代码:

add_action( \'new_to_publish\', \'conditional_email\', 10, 1);

/**
 * Send emails based on categories when a post is published
 *
 * @param \\WP_Post $post
 */
function conditional_email( $post ) {
  wp_mail( \'[email protected]\', \'test\', \'test\' );
}

相关推荐

如何修改WP_INCLUDE/BLOCKS/LATEST_posts.php

我是WordPress开发的初学者,希望得到一些帮助。我在一个简单的WordPress网站上工作。基本上,用户希望在主页上显示最新的帖子。我使用了最新帖子块,并将其设置为显示整个帖子内容,现在用户不希望帖子标题链接到单个帖子页面(因为帖子的内容显示在主页上)。如何安全地修改模板文件,使其像h2标记一样使用,而不是在主题中使用的href标记。我知道您可以创建子主题并修改wp_content 文件,但我不确定如何处理中的文件wp_include. 我读到一些关于修改functions.php 但我不确定,如果