web-dev-qa-db-ja.com

投稿コンテンツのショートコードを一度にして削除する方法

私はテーマ/プラグインを変更しました。投稿内容にはまだショートコードが表示されています。

非表示にするにはいくつかのヒントがありますが、コンテンツ機能を使用するたびに、ショートコードが再び表示されます。また、私のショートコードは[theshortcode id="34877"][theshort size="large" "tiny"]などの「拡張型」なので、データベースから削除するためのヒントはまったく機能しません。

1
Diana

試す前にデータベースをバックアップしてください

現在のテーマで、functions.phpファイルを開き、以下のコードを追加します。 theshortcodeyouhateでは、取り除きたいショートコードを知らせてください。拡張型でもうまく動作することに注意してください。

このコードを追加したら、F5キーを押すと完了です。

add_action ('init','remove_shortcode_from_db'); //you can choose any other actions such wp_head etc

function remove_shortcode_from_db($shortcode = 'theshortcodeyouhate') {

global $wpdb;

$posts = $wpdb->get_results("SELECT ID,post_title,post_content FROM
$wpdb->posts");
$regex =
'/\[(\[?)('.$shortcode.')\b([^\]\/]*(?:\/(?!\])[^\]\/]*)*?)(?:(\/)\]|\](?:([
^\[]*+(?:\[(?!\/\2\])[^\[]*+)*+)\[\/\2\])?)(\]?)/s';

foreach($posts as $post) {
    $final = preg_replace($regex,'',$post->post_content);
    $change = $wpdb->update( $wpdb->posts, array('post_content' =>
$final), array('ID' => $post->ID));
}
}

wp-hackersメーリングリストのおかげで

1
Diana