Categories: WordPress開発

WordPressのカスタム投稿を削除する方法

カスタム投稿は、開発途中にやっぱりそれいらない。

となることも少なくありません。
とはいえ、開発環境ではほとんど問題にならないので、データの残りカスがでても気にしないのですが。。

でも、カスタム投稿を含んだプラグインを提供するとなると話は別です。
プラグインで用意したカスタム投稿に投稿した後に、そのプラグインをアンインストールしたら、投稿した内容も削除しないといけない場合があります。

そこで。
WordPressで、カスタム投稿に投稿済みの内容がある場合に、その内容を削除する方法です。

  function delete_posts($postType=null) {
    if (!$postType) {return null;}
    global $wpdb;
    $tn_posts = $wpdb->prefix . 'posts';
    $tn_postmeta = $wpdb->prefix . 'postmeta';
    $select = "DELETE FROM $tn_posts " ;
    $select .= "WHERE post_type='$postType' ;";
    $results = $wpdb->query( $select );
    return $results;
  }

  function delete_postmeta($postType=null) {
    if (!$postType) {return null;}
    global $wpdb;
    $tn_posts = $wpdb->prefix . 'posts';
    $tn_postmeta = $wpdb->prefix . 'postmeta';
    $select = "DELETE pm FROM $tn_postmeta pm ";
    $select .= "LEFT JOIN $tn_posts p ON p.ID=pm.post_id ";
    $select .= "WHERE p.post_type='$postType' ;";
    $results = $wpdb->query( $select );
    return $results;
  }

delete_postmeta('my_posttype');
delete_posts('my_posttype');

delete_postmeta()でカスタムフィールドを削除してから、 delete_posts()でカスタム投稿の投稿データを削除しています。
my_posttypeにはカスタム投稿のpost typeを入れるわけです。

nakaike