【问题标题】:Send Notification when new post is published in wordpress在 wordpress 中发布新帖子时发送通知
【发布时间】:2015-05-15 21:51:05
【问题描述】:

现在,当在 WordPress 中创建新帖子时,我正在向 android 应用程序用户发送通知。但问题是,它也会在草稿创建和帖子更新时发送通知。只有在新帖子发布时我应该设置什么条件来发送通知?

这是我的代码,位于 wp-admin/includes/post.php

function _wp_translate_postdata( $update = false, $post_data = null ) {
    if ( $update)
        $post_data['ID'] = (int) $post_data['post_ID'];

        $post_id =  $post_data['ID'];
        global $wpdb;

        $sel2 = mysql_query("select * from gcm_users");
        while($data1  = mysql_fetch_assoc($sel2)) 
        {

            $key = $data1['gcm_regid'];
            include_once '../blogdroid/config.php';
            include_once '../blogdroid/GCM.php';

            $gcm = new GCM();
            $sel = mysql_query("select * from ".$wpdb->prefix."posts where ID='$post_id'");
            $data = mysql_fetch_assoc($sel);
            $Pname = $data['post_title'];
            $registatoin_ids = array($key);
            if($Pname != 'Auto Draft')
            {
                    $message = array("blog" => 'New Blog Arrived '.$Pname );

                    $result = $gcm->send_notification($registatoin_ids,$message);
            }

        }
}

【问题讨论】:

  • 您是否要更改 wordpress 核心文件?这是一个非常坏的习惯。
  • 是的,但是可以检查帖子的状态吗?我的意思是如何检查新帖子是否已发布或已更新?
  • 试试这个if( ( $_POST['post_status'] == 'publish' ) && ( $_POST['original_post_status'] != 'publish' ) ) { echo "New post!"; }
  • 它不适用于新创建的帖子。
  • 所以你必须在你的function.php文件中使用transition_post_status动作,如@HdK回答。

标签: php wordpress


【解决方案1】:

如前所述,您确实不应该编辑 WP 核心文件。要做你想做的事,你可以创建一个函数并挂钩到post status transitions,codex 对它们的工作原理有一个完美的解释。

【讨论】:

  • 我已经创建了带有草稿的钩子来发布状态,并且效果很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-10
  • 1970-01-01
  • 1970-01-01
  • 2014-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多