web-dev-qa-db-ja.com

Orphan wp_postmetaを最もよく削除する方法

カスタム投稿タイプのメタデータを含むかなり複雑なクエリを実行している最中です。残念ながら、投稿が削除されてもメタデータはそのまま残り、私が数えているように問題が複雑になります。

私は、投稿が削除された場合にOrphanメタデータを削除するのが最善の方法だと思っていました。

$ wpdbを通してそれらをデータベースから削除する関数を含めるべきですか?

それを実現するSQLクエリを見つけましたが、フォーマット方法がわかりません。

DELETE pm
FROM wp_postmeta pm
LEFT JOIN wp_posts wp ON wp.ID = pm.post_id
WHERE wp.ID IS NULL

私は自分のデータベースのバックアップコピーをphpmyadminで試しましたが、役に立ちませんでした。

2
mantis

このスニペットは十分に有効です。$wpdbと共に使用してください。この場合、私は使用します:

<?php
add_action( 'before_delete_post', 'my_func' );
function my_func( $postid ){

// We check if the global post type isn't ours and just return
global $post_type;   
if ( $post_type != 'my_custom_post_type' ) return;

// My custom stuff for deleting my custom post type here
}
?>

出典

0
JMau