如何在publish_post挂钩上获取wordpress上发布的帖子数据?

时间:2014-08-30 14:58:55

标签: php wordpress

我已经编写了这段代码,用于使用发布帖子钩子上发布的帖子数据,但我不知道如何获取帖子的值

add_action('publish_post','fetch_post');

function fetch_post()
{
    global $wpdb;
    $sqlCommand = "SELECT post_title, post_name FROM wp_posts WHERE post_type='post' AND post_status='publish' ORDER BY ID DESC LIMIT 1";
    $posts = $wpdb->get_results($sqlCommand);
    print_r($posts);

    $sqlCommand = "INSERT INTO testing (post_title,post_name) VALUES(%s,%s)";
    $wpdb->query($wpdb->prepare($sqlCommand,$posts[0]->post_title,$posts[0]->post_name));
}

这段代码给了我这个帖子,但是当我们更新帖子时,这个函数再次被调用,它返回了最后一篇文章,但我想要更新或发布的帖子。

提前致谢。

1 个答案:

答案 0 :(得分:4)

您可以使用以下内容代替您的代码:

<?php

add_action('publish_post', 'fetch_post', 10, 2);
function fetch_post($id, $post) {
    global $wpdb;

    $sqlCommand = "INSERT INTO testing (post_title,post_name) VALUES(%s,%s)";
    $wpdb->query($wpdb->prepare($sqlCommand, $post->post_title, $post->post_name));
}

?>

我做的重大改变是我现在使用publish_post钩子发送给被调用函数的参数。第一个参数是已发布的帖子ID,第二个参数是更新帖子的整个帖子对象。

所以这样我们也避免了你提交的示例代码中的第一个查询。