如何在发布后挂钩上获取标签?

时间:2019-12-03 作者:Prashant Patil

要求:在每个发布/更新帖子上,我们需要帖子中的所有标签,并在上面执行一些功能。

Case 1:创建帖子、添加标签并立即发布===效果完美===

Case 2:更新旧帖子并点击更新按钮。===完美的作品===

Case 3:创建帖子,添加标签,并将其保存到草稿和关闭。。再次打开同一篇文章,点击发布,不做任何更改

=== FAIL === post结果中没有任何内容。。找不到标签,但贴子中已有标签,但如果我们更改了某些内容或只是删除并添加了相同的标签,那么它就可以工作了。

我想处理第三个案子。。如何在发布时获取草稿帖子的标签。。

下面是我的代码

// This is hook which calls automatically on publish the post
add_action( \'publish_post\', array($this, \'post_published_notification\'), 10, 2 );

// The function calls on publish the post
public static function post_published_notification( $ID, $post ) 
{
    $request_body = file_get_contents(\'php://input\');
    PostPublishNotification::saveDataInNotificationTable($ID,$request_body);
}


// We neen the tags here..
public static function saveDataInNotificationTable($ID,$request_body)
{
    $post_data = json_decode($request_body);

    // Here is nothing when I publish the drafted post. otherwise it works when I publish/update the new/old post
    var_dump($post_data);
    exit;

    $tags = $post_data->tags;

    if(isset($tags) && is_array($tags) && count($tags) > 0)
    {
       // SOME CODE
    }
}

1 个回复
SO网友:Prashant Patil

Found Solution :

If there is no data in the request_body, the we can also fetch it from the postID which is already we have.

Changed Code: 如果数据不可用,则添加条件,然后从post id获取

public static function saveDataInNotificationTable($ID,$request_body)
{
    $post_data = json_decode($request_body);

    $tags = $post_data->tags;

    if($post_data == "" || $post_data == null)
    {
        $tags = get_the_tags($ID);
    }

    if(isset($tags) && is_array($tags) && count($tags) > 0)
    {
       // SOME CODE
    }
}

相关推荐

Show all Tags in each post

我创建了一个名为“Project”的新帖子类型。我在其中注册了1个分类“标记”,如下所示:https://pastecode.xyz/view/844258b1我在post type“Project”中的1篇文章中输入了标签。如果要输入文章,它将显示该文章中的所有标记。谁能帮帮我吗。非常感谢。