在WordPress操作中获取帖子ID?

时间:2012-01-08 作者:shammer

我有这个密码

add_action( \'delete_post\', \'my_delete_function\' );
 function my_delete_function() { 
   global $wpdb;
   $wpdb->query("
    DELETE FROM wp_votes WHERE post=".$thePostID."
;);
 }
如何获取被删除帖子的id?

此外,如果在管理中删除多个帖子,这是否仍然有效?

2 个回复
最合适的回答,由SO网友:Asko 整理而成

我还没有测试,所以我为您提供了两种可能性,在一个循环中,使用以下选项:

$post_id = get_the_ID();
在循环外部,请使用以下选项:

global $wp_query;
$post_id = $wp_query->post->ID;
或:

global $post;
$post_id = $post->ID
或者可以在函数中传递post ID,就像

function my_function($post_id){
    // code
}

SO网友:TheDeadMedic

向函数中添加一个参数,该参数将传递被删除的当前帖子的ID。

add_action( \'delete_post\', \'my_delete_function\' );
function my_delete_function( $post_id /* <- ID of post being deleted */ )
{ 
    global $wpdb;
    $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}_votes WHERE post = %d", $post_id ) );
}
使用任何外部变量(如@Asko的答案中的全局变量)都会消除以下任何保证actually being deleted 是您在功能中正在处理的内容-它可能会完全失败,甚至会删除错误帖子的数据!

结束

相关推荐

使用PRE_GET_POSTS筛选器在所有元值上搜索多个字符串

使用pre\\u get\\u posts筛选器在所有meta\\u值上搜索给定字符串:$query->set(\'meta_value\', \'first string\'); 调试:AND ( (CAST(wp_postmeta.meta_value AS CHAR) = \'first string\') ) 工作正常:)但如何在所有meta\\u值上搜索字符串数组?例如我需要这样的东西:$query->set(\'meta_value\', array(\'fir