web-dev-qa-db-ja.com

ワードプレスのアクションで投稿IDを取得しますか?

私はこのコードを持っています

add_action( 'delete_post', 'my_delete_function' );
 function my_delete_function() { 
   global $wpdb;
   $wpdb->query("
    DELETE FROM wp_votes WHERE post=".$thePostID."
;);
 }

削除する投稿のIDを取得する方法

さらに、複数の投稿が管理者から削除された場合でもこれは機能しますか?

1
shammer

私はテストしていないので、ループ内で次の2つの可能性を提供します。

$post_id = get_the_ID();

ループの外側では、以下を使用してください。

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

または

global $post;
$post_id = $post->ID

あるいは、ポストIDを関数に渡すこともできます。

function my_function($post_id){
    // code
}
2
Asko

関数にパラメータを追加します。これには、現在削除されている投稿の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の答えのグローバルのような)外部変数を使用すると、ポストが実際に削除されているが関数内で作業しているものであるという保証がなくなります。間違った投稿のデータを削除することもできます。

3
TheDeadMedic