我已经编写了这段代码,用于使用发布帖子钩子上发布的帖子数据,但我不知道如何获取帖子的值
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));
}
这段代码给了我这个帖子,但是当我们更新帖子时,这个函数再次被调用,它返回了最后一篇文章,但我想要更新或发布的帖子。
提前致谢。
答案 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,第二个参数是更新帖子的整个帖子对象。
所以这样我们也避免了你提交的示例代码中的第一个查询。