web-dev-qa-db-ja.com

Wordpressのカスタム投稿タイプでインラインスタイルを自動的に一括削除する方法

私は約100以上の個々のページに相当するインラインスタイルを削除する実用的な方法を探しています。私はWordからコピーして貼り付けることによってクライアントのためのコンテンツを入力しました。そして、それはそのすべてのデータをそれと一緒に取り、それをインラインスタイルで包みました。各投稿を個別に確認するのは意味がありません。誰かが前にこれをやったことがありますか?私は「うまくいく」どんな解決策でも大丈夫だろう。

私と私の雇用主は、どんな入力に対しても非常に感謝します。

1
Mitchell Garcia

私は 検索正規表現プラグイン を使用します。それはあなたが(あなたの場合delete)インラインスタイルを見つけて置き換えるために 正規表現 を使うことを可能にします。始める前に、必ずデータベースをバックアップしてください。

あなたのために働くべきである簡単な正規表現は

(style=").*"

style="で始まり、別の二重引用符"に達するまで、任意の数の文字を含む文字列を探します。 (それはHTML要素に適用されるインラインスタイルでしょう)。あなたはそれを空の値に「置き換える」(あなたはそれを削除するために)。

また、 Regexr を使用してコンテンツ/正規表現をテストして、指定したものが機能することを確認することもできます。

始める前にデータベースをバックアップしてください。問題が発生した場合は、元に戻すことができます。このプラグインを使用すると、Replace&Saveを実行する前に(テストとして)検索できるようになります。

3
Jared Cobb

私はあなたがそれを伝統的なインターフェースを通して利用可能にすることなしに投稿に対して一括操作をする必要がある時はいつでも WP-CLI をチェックアウトすることを勧めます。あなたのケースでは、あなたはタイプ 'your_post_type'のあなたの投稿の全てを反復する以下のサンプルのようなコマンドを登録したいでしょう:

<?php if ( ! defined( 'WP_CLI' ) ) return;

/**
 * Basic structure for http://wordpress.stackexchange.com/q/161963/13937
 *
 * @package wp-cli
 */
class Wpse161963_Command extends WP_CLI_Command {

  /**
   * Clean posts
   *
   * ## OPTIONS
   *
   * ## EXAMPLES
   *
   * wp wpse161963 scrub
   *
   */
  public function scrub( $args, $assoc_args ) {
    $args = array(
      'post_type' => 'your_post_type',
      'posts_per_page' => -1
    );
    $posts = get_posts( $args );

    foreach ( $posts as $post ) {

      // Scrub the post content and save the results

      // Print a success message
      WP_CLI::success( sprintf( __( 'Post "%s" has been scrubbed!', 'wpse161963' ), $post->post_title );

    }
  }

}

WP_CLI::add_command( 'wpse161963', 'Wpse161963_Command' );

これはほんの一例ですが、正しい方向に進むためには十分なはずです。

0
Steve Grunwell