worpress データベース内のすべての投稿コンテンツを更新するために、単一の SQL SELECT ステートメントを使用しようとしています。
個々の投稿ごとに、投稿本文内にランダムに配置された特定の文字列値を更新する必要があります。この値は一意ではないため、コンテンツ内で数回発生しますが、2 回目の発生のみを更新する必要があります。
以下に、単一の投稿のコードを示します。データベース内の投稿テーブル全体に対してそれを行うには、コードを拡張するための助けが必要です。
SET @pos=2; // this is the occurrence index
SET @str := (SELECT `post_content` FROM `wp_posts` WHERE ID = 1); // this is a specific post identified by the ID
SET @search='1234'; // this is the test string I'm looking for
// 4321 is the replacement value of 1234 search sting above
// post update sql query
UPDATE `wp_posts` SET `post_content` = (SELECT CONCAT(SUBSTRING_INDEX(@str,@search,@pos),'4321',SUBSTRING_INDEX(@str,@search,(@pos-1-(LENGTH(@str)-LENGTH(REPLACE(@str,@search,'')))/LENGTH(@search))))) WHERE ID = 1;
これは、ID で識別される単一の投稿のクエリとして完全に機能しますが、wordpress データベース内のすべての投稿に適用されるように拡張する方法についてはよくわかりませんが、単一の SQL クエリを使用します。
どんな助けでも大歓迎です。
ありがとうございました。