web-dev-qa-db-ja.com

Wordpressのカスタム投稿データベーステーブルを空にする方法

約2000件のカスタム投稿があります。そして7通常のWPページ。ページに影響を与えずにカスタム投稿をすべて削除したいです。私は最も簡単な方法はカスタム投稿テーブルを空にすることだと思いましたが、私はそれを行う方法を知りません。私はDB操作に精通していますが、私はwp投稿のスキーマを知らないので、これらのカスタム投稿がどこにあるのかわかりません。プラグインを使っても構いません。

まとめ: - すべてのカスタム投稿とそのデータを削除するだけです。

4
tinyhook

私はWordpressのデータベースからすべての記事を削除するためにカスタムページテンプレートを使用しました。このページに行くたびに300の投稿が削除されます。ページテンプレートのコードは次のとおりです。

<?php
// Get 300 custom post types pages, set the number higher if is not slow.

$mycustomposts = get_posts( array( 'post_type' => 'movies', 'numberposts' => 300));
    echo '<pre>';
    print_r($mycustomposts);
    echo '</pre>';
   foreach( $mycustomposts as $mypost ) {
     // Delete's each post.
    wp_delete_post( $mypost->ID, true);
    // Set to False if you want to send them to Trash.
   }
   echo '<h1 style=:"color:red;"> DELETED! DELETED! DELETED! DELETED! </h1>';



// 300 custom post types are being deleted everytime you refresh the page.?>
5
tinyhook

私はこれが古い質問であることを知っています、しかしこの問題をグーグルするときそれが最初に上がったとすれば私はそれに解決策が添付されるべきだと考えました。

特定の種類の投稿をすべて削除するには、phpMyAdmin、 コマンドライン、 などを使用してサイトのデータベースにアクセスします。その後、以下のコマンドを実行します。

DELETE FROM wp_posts WHERE post_type='post_type';
DELETE FROM wp_postmeta WHERE post_id NOT IN (SELECT id FROM wp_posts);
DELETE FROM wp_term_relationships WHERE object_id NOT IN (SELECT id FROM wp_posts);

最初の行は、そのpost_typeを持つすべての投稿をwp_postsから削除します。

2番目のメソッドは、wp_postmetaから投稿に関連付けられていない投稿メタデータを削除します。

3行目は、その投稿タイプに関連付けられているwp_term_relationshipsからタグまたはカテゴリを削除します。 将来、指定されたpost_typeの投稿をさらに作成する予定がある場合は、この行を省略してください。

3
jlengstorf

これにより、投稿、投稿のメタデータ、および投稿で使用されているすべての用語が削除されます。用語自体は削除されません。 PHPスクリプトはこれと似ていますが、処理が遅くなります。

{{your CPT}}をあなたのカスタム投稿タイプの識別子に置き換えて、phpmyadminまたはmysqlのデータベースに追加してください。

DELETE a,b,c
    FROM wp_posts a
    LEFT JOIN wp_term_relationships b
        ON (a.ID = b.object_id)
    LEFT JOIN wp_postmeta c
        ON (a.ID = c.post_id)
    WHERE a.post_type = '{{your CPT}}';

残念ながら、関連するメディアエントリは削除されません。複数の投稿にリンクされているメディアエントリを削除する可能性があるため、sqlまたはphpを使用してこれを行うのは危険です。

ではごきげんよう。

1
IanEdington

投稿、ページ、カスタム投稿の種類はすべて同じテーブルに格納されます(カスタムプレフィックスを設定しない限り、通常wp_posts)。

あなたもあなたのページを削除せずにテーブルをクリアすることはできません。 (データベースを傷つけずに)これを行う最も簡単な方法は、WordPress管理者から手動で削除することです。

はい、それはしばらくかかります。しかし、覚えておいてください、投稿(そしてページやカスタム投稿) また wp_postmetaテーブルにデータを保存します。管理UIを介してそれらを削除すると、WordPressはメタテーブルも消去します。あなたがDBを通してそれを手動でやろうとするよりむしろあなたがちょうどUIを通して物事をするならばあなたはあなた自身に多くのトラブルを省くでしょう。

1
EAMann