あなたの助けが必要です。 SQLクエリを使用してカスタム投稿タイプ( 'book')から添付ファイルを一括削除しようとしています。私はこのスニペットをワードプレスフォームで見つけました: Wordpress.org
私は自分のローカルコンピュータでそれをテストしました、そしてそれは私のメディアライブラリからすべての添付ファイルを削除します。さて、私のカスタム投稿タイプ「book」からの添付ファイル(注目の画像とサムネイル)のみをターゲットにするようにクエリを設定してください。
ありがとう
あなたはこのようなネイティブのWordPressコーデックス呼び出しでそれをすることができます(source -すべて/ )
<?php
/* create this code in a file in the main wordpress directory e.g. delmedia.php
and access it via mydomain.com/delmedia.php
*/
// Include the wp-load'er
include('wp-load.php');
$args= array(
'post_type' => 'book', // obvious
'posts_per_page' => -1 // get them all
);
// get all attachments post ids
$posts = get_posts( $args );
foreach ($posts as $post_id) {
// get an array of image data
$image_attributes = wp_get_attachment_image_src( $post_id->ID );
if (strpos($image_attributes[0], 'mystring') !== FALSE){
echo 'Image Found : '.$image_attributes[0];
if (false === wp_delete_attachment( wp_delete_attachment( $post_id->ID, true ) ) ) {
echo ' and delete failed!<br>';
} else {
echo ' and delete succeeded!<br>';
}
}
}
?>
ここで2つの方法を組み合わせる:
$args = array(
'post_type' => 'attachment',
'numberposts' => null,
'post_status' => null,
'post_parent' => $post_id
);
$attachments = get_posts($args);
if ($attachments) {
DELETE FROM wp_postmeta
WHERE post_id IN
(
SELECT id
FROM wp_posts
WHERE (post_type = 'book')
)
;
}
};
その後:
DELETE FROM wp_posts WHERE (post_type = 'book')
これにより、添付ファイルと書籍を組み合わせた投稿タイプが表示されます。