使用过渡在发布时发布Meta Emtpy

时间:2019-10-22 作者:Dario Zadro

我想用get_post_meta 用下面的钩子,但它总是空的。我调整了优先级,看看这是否有帮助,但运气不好。有什么想法吗?

发布后,post meta肯定在db中。

function some_function( $new_status, $old_status, $post ) {
    if ( ( $new_status == \'publish\' ) && ( $old_status != \'publish\' ) && ( $post->post_type == \'cpt\' ) ) {

        // send admin notification
        $post_title = get_the_title( $post->ID ); 

        $message .= \'Name: \' . $post_title . \'<br>\';
        $message .= \'Email: \' . get_post_meta($post->ID, \'_email\', true) . \'<br>\';

        $headers[] = \'Content-Type: text/html; charset=UTF-8\';
        $headers[] = \'From: \' . get_option( \'blogname\' ) . \' <\' . get_option( \'admin_email\' ) . \'>\';
        wp_mail( get_option( \'admin_email\' ), $subject, $message, $headers );

    } else {
        return;
    }
}
add_action( \'transition_post_status\', \'some_function\', 100, 3 );
Thepost_title 在电子邮件中使用上述内容,只是没有元数据。

如果有其他更简单的方法,我洗耳恭听!

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

通过查看以下帖子/答案,我成功了:https://wordpress.stackexchange.com/a/134283/17126

似乎做不到,我改变了get_post_meta 行收件人:

$message .= \'Email: \' . sanitize_text_field($_POST[\'_email\']) . \'<br>\';
还有,我可以看到$_POST 来自post的数据。通过开发工具提交php。

最后,我把钩子换成了publish_cpt 您可以在此处阅读更多信息:https://codex.wordpress.org/Post_Status_Transitions

现在一切都好了!

相关推荐

Conditional action hooks

我正在开发一个使用AJAX的插件,但我在控制代码流方面遇到了困难。我想在运行条件后挂接函数。我的钩子在控制结构内部添加时不会启动,但在外部会启动。我还有一个触发AJAX请求的事件,这只能在用户点击触发事件后,在加载所有DOM之后发生。AJAX请求告诉PHP函数设置cookie。它设置了cookie,但在阅读关于cookie的PHP文档时,我发现它们只能在发送任何输出后设置,但我还是做到了这一点?我读过WordPress初始化序列,但这并没有帮助我解决这个问题。这是我的密码:add_action(\'wp_