カスタム投稿タイプのメタデータを含むかなり複雑なクエリを実行している最中です。残念ながら、投稿が削除されてもメタデータはそのまま残り、私が数えているように問題が複雑になります。
私は、投稿が削除された場合に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で試しましたが、役に立ちませんでした。
このスニペットは十分に有効です。$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
}
?>