プラグインなしで投稿のカテゴリを一括で選択解除する方法

公開: 2020-10-05

「カテゴリ」は、WordPressのデフォルトの分類法です。 オペレーターは、カテゴリーを使用して、ブログ投稿をさまざまなセクションにソートおよびグループ化できます。 カテゴリは、訪問者がサイトをより速くナビゲートするのに役立つだけでなく、Webサイトのトピックを知るのにも役立ちます。 ウェブサイトの運営者は、WordPress管理パネルを使用してカテゴリと投稿を使用した基本的な操作を実装したり、WordPressプラグインを使用してさまざまな方法で投稿を操作したりできます。

目次を隠す
  1. 1. WordPressがクライアントからのWebリクエストを処理する方法を理解していますか?
  2. WordPressの記事一括操作のための2.重要な表
  3. 3.すべての投稿をあるカテゴリから別のカテゴリに移動する–SQLコマンドを使用する
    1. 3.1。 特定のカテゴリに属する​​すべての投稿のIDリストを取得する
    2. 3.2。 新しいカテゴリのIDを取得します
    3. 3.3。 指定されたIDリストで投稿を更新します
  4. 4.最後の言葉

ただし、WordPressサイトでプラグインを使いすぎると、パフォーマンスの問題やセキュリティの問題が発生する可能性があるため、オプションとして使用しないでください。 この記事では、プラグインを使用せずに投稿のカテゴリを一括で選択解除する方法について学習しましょう。

WordPressがクライアントからのWebリクエストを処理する方法を理解していますか?

WordPressサイトを操作するには、Webサーバーがクライアントからの要求をどのように処理するかを理解する必要があります。 詳細な操作には、カテゴリ内の投稿の一括選択解除が含まれます。

典型的なWebサーバーはLAMPスタック(Linux – Apache – MySQL / MariaDB – PHP)です。 他の同等の概念は、他のWebサーバープラットフォームにあります。

投稿の選択を一括で解除するには、WordPressがリクエストを処理する方法について学ぶ必要があります。

LAMPスタックサーバー-クライアント通信

1.クライアントはHTTP要求を送信して、WebサーバーからWebデータを要求します。

2. Webサーバーは、クライアントから有効なHTTP要求を受信します(ファイアウォールルールを通過した後)。

  • HTTPリクエストの構造を分析し、クライアントが必要とするHTMLページを正確に特定します。
  • スクリプト層(PHP)への要求を解析します。

3.スクリプトレイヤーPHP:

  • データベースにクエリを実行し、必要なすべての情報を取得します。
  • テーマのソースコードと組み合わせて、動的なWebページをレンダリングします。
  • Webサーバーに戻ります。

4. Webサーバー:

  • HTTP応答メッセージを作成します。
  • HTTP応答メッセージをクライアントに送信します。

5.クライアントはWebサーバーからHTTP応答メッセージを受信し、WebブラウザにWebデータを表示します。

WordPress投稿の一括操作のための重要なテーブル

WordPressサイトのデータベースのスキーマにはテーブルのパックがあります。 スキーマはサイトごとに異なります。 ただし、WordPressサイトの投稿を操作する場合は、これらのテーブルをより重要視する必要があります。

テーブル名説明
wp_postmeta WordPressサイトの追加のコンテンツ関連データを保存します。
wp_post WordPressサイトのすべての重要なコンテンツ関連データを保存します。
wp_term_relationships 投稿をカテゴリ、タグ、リンクに接続するすべての接続詞データを保存します。 このテーブルの情報は、用語オブジェクトと用語の間のマップとして機能します。
wp_term_taxonomy wp_termsテーブルの追加データをwp_termsます。
wp_term カテゴリ、投稿、ページ、リンクのタグを保存します。

すべての投稿をあるカテゴリから別のカテゴリに移動する–SQLコマンドを使用する

WordPressデータベースを直接操作するには、オペレーターは使用するDBMS(データベース管理システム)を決定する必要があります。 ラボ環境ではLAMPスタックをWebプラットフォームとして使用するため、オペレーターはphpMyAdmin、WordPressプラグイン、さらにはSSHセッションを介したMySQLクライアント(ターミナルコマンド)を使用してWordPressデータベースを操作できます。このシナリオでは、DBMSはMySQLWorkBenchです。

WordPressデータベースに変更を実装する前に、WordPressサイトの完全バックアップを作成することをお勧めします。 この完全バックアップには、WordPressのソースコード(テーマ、PHPファイルなど)とデータベース構造が含まれています。 理想的な目的のために、オペレーターはWordPressサイトを実行しているホスト全体の完全バックアップを作成できます。

これは、すべての投稿を「未分類」カテゴリから「インスピレーション」カテゴリに移動するための完全なSQLスクリプトです。

 SET @listID =(
     	SELECT GROUP_CONCAT(ID)FROM wp_posts
             	WHERE post_type = "post"
             	AND post_status = "publish"
             	AND ID IN(
                      	SELECT object_id FROM wp_term_relationships
                               	WHERE term_taxonomy_id IN(
                                        	SELECT term_taxonomy_id FROM wp_term_taxonomy
                                                	WHERE分類法= "カテゴリ"
                                                	AND term_id IN(
                                                         	SELECT t.term_id FROM wp_terms t
                                                                  	WHERE t.name = "Uncategorized"
   	 )。
	)。
)。
);

SET @newCategoryID =(
     	SELECT t.term_id FROM wp_terms t WHERE t.name = 'インスピレーション'
);
 
SELECT @newCategoryID;
 
@sqlCmd = CONCAT(
     	'UPDATE wp_term_relationships tr'、
	'SET tr.term_taxonomy_id ='、@ newCategoryID、 ''、
	'WHERE tr.object_id IN('、@ listID、 ');'
);

SELECT @sqlCmd;

@sqlCmdからstmtを準備します。
SET SQL_SAFE_UPDATES = 0;
実行stmt;
SET SQL_SAFE_UPDATES = 1;
DEALLOCATE PREPARE stmt;

詳細なスクリプトは次のように説明されます。

特定のカテゴリに属する​​すべての投稿のIDリストを取得する

このデモでは、「未分類」カテゴリからすべての投稿を一括で選択解除してから、「インスピレーション」という名前の新しいカテゴリに移動する方法を示します。

WordPress管理パネルから、これら3つの投稿は「未分類」カテゴリに分類されます。

3つの投稿のIDリストを取得して、それらのカテゴリの選択を一括で解除します。

以下のSQLコマンドは、「Uncategorized」という名前のカテゴリのすべての投稿IDを取得します。

 SET @listID =(
     	SELECT GROUP_CONCAT(ID)FROM wp_posts
             	WHERE post_type = "post"
             	AND post_status = "publish"
             	AND ID IN(
                      	SELECT object_id FROM wp_term_relationships
                               	WHERE term_taxonomy_id IN(
                                        	SELECT term_taxonomy_id FROM wp_term_taxonomy
                                                	WHERE分類法= "カテゴリ"
                                                	AND term_id IN(
                                                         	SELECT t.term_id FROM wp_terms t
                                                                  	WHERE t.name = "Uncategorized"
        )。
    )。
)。
);

@listIDの値を確認します。

投稿IDリストを取得して、投稿のカテゴリの選択を一括解除します。

新しいカテゴリのIDを取得します

SET @newCategoryID =(
    	SELECT t.term_id FROM wp_terms t WHERE t.name = 'インスピレーション'
);

@newCategoryIDの値を確認します。

新しいカテゴリIDを取得し、「未分類」カテゴリを一括で選択解除した後、投稿をそのIDに移動します。

指定されたIDリストで投稿を更新します

まず、SQLコマンドを作成し、変数@sqlCmdます。

 / *変数@sqlCmdに格納されている期待されるコマンド:
UPDATE wp_term_relationships tr
SET tr.term_taxonomy_id = 5
WHERE tr.object_id IN(131,132,133);

* /
@sqlCmd = CONCAT(
    	'UPDATE wp_term_relationships tr'、
	'SET tr.term_taxonomy_id ='、@ newCategoryID、 ''、
	'WHERE tr.object_id IN('、@ listID、 ');'
);

次に、それを確認します。

SQLコマンドを確認して、指定されたIDリストで投稿を更新します。

最後に、 @sqlCmd変数に格納されているSQLコマンドを次のステートメントで発行します。

 @sqlCmdからstmtを準備します。
SET SQL_SAFE_UPDATES = 0;
実行stmt;
SET SQL_SAFE_UPDATES = 1;
DEALLOCATE PREPARE stmt;

結果は次のとおりです。

プラグインなしの投稿のカテゴリを一括で選択解除した結果。

最後の言葉

WordPressサイトの投稿のカテゴリを一括で選択解除するにはさまざまな方法があります。 プラグインを使用してWebインターフェイスを介して対話するか、SQLコマンドを使用してWordPressデータベースに直接影響を与える場合、オペレーターは変更される重要なオブジェクトを理解する必要があります。

うまくいけば、この記事で、投稿のカテゴリを一括で選択解除するためのもう1つの選択肢が提供されます。 WordPressでより便利なテクニックを習得するために、今後の記事をフォローしましょう!

プラグインを使用して投稿のカテゴリを一括で選択解除する方が簡単な場合は、この記事を参照してください。