PUBLISH_POST操作挂接不提供POST_META_DATA

时间:2016-06-02 作者:deepthi shv

我编写了以下函数来获取publish post上的post数据,但我看到post\\u meta不可用,它总是空的。如何在publish\\u post hook上检索帖子的帖子元数据?

归根结底,我想收集数据$article转换为json并使用curl发布。当我使用print_r(json_encode($article)) 它实际上执行内容和输出中的html标记。有没有像wp\\u send\\u json那样的简洁方法?

add_action( \'publish_post\', \'newdb\',10,2);

function newdb($post_id, $post){

            if($post_id !=null){
            $article[\'postID\'] = $post->ID;
            $article[\'seo_url\'] = get_permalink($post->ID);
            $article[\'title\'] = $post->post_title;
            $article[\'status\'] = $post->post_status;
            $article[\'body\'] = html_entity_decode(htmlentities(addslashes($post->post_content)));
            $article[\'related\'] = array();
            $relatedStories = get_post_meta($post->ID, \'realtor_related_stories\', true);
            if ($relatedStories != null) {
                $rsCount = count($relatedStories) - 1;
                while ($rsCount > 0) {
                    $rStories[\'title\'] = $relatedStories[\'related_stories_attribution_\' . $rsCount][\'headline\'];
                    $rStories[\'seo_url\'] = $relatedStories[\'related_stories_attribution_\' . $rsCount][\'url\'];
                    $rStories[\'img_src\'] = wp_get_attachment_url(get_post_thumbnail_id(url_to_postid($rStories[\'seo_url\'])));
                    array_push($article[\'related\'], $rStories);
                    $rsCount--;
                }
            }
 $article[\'seo_focus_keyword\'] = get_post_meta($post->ID, \'_yoast_wpseo_focuskw\', true);
            $article[\'seo_title\'] = get_post_meta($post->ID, \'_yoast_wpseo_title\', true);
            $article[\'seo_metadesc\'] = get_post_meta($post->ID, \'_yoast_wpseo_metadesc\', true);
  wp_send_json($article);
//print_r($article) => gives wierd output because of embed tags in post body

        }
}

1 个回复
SO网友:Nathan Johnson

如果wp_send_json() 函数正在发送正确的数据,但出于某种原因,您希望使用另一个函数实际发送JSON数据,然后您可以使用wp_json_encode(). 这基本上是唯一wp_send_json() 在发送数据之前执行。

add_action( \'publish_post\', \'wpse_228607_publish_post\', 10, 2 );
function wpse_228607_publish_post( $post_id, $post ){
  //* Do some stuff to get your $article variable

  $encode = wp_json_encode( $article );

  //* Do some stuff with the json encoded article
}
确保发送的内容类型和字符集正确。wp_send_json() 帮你解决这个问题。

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在