1

OK、私は PHP に関しては初心者ですが、達成したいことは次のとおりです。

WordPress サイトのテーマを、プラグインを使用して投稿を評価するもの (WP-Ratings) から、評価が組み込まれている新しいテーマに変更したいと考えています。新しいテーマは、評価をメタデータとして保存します。 wp_ratings テーブルから評価を取得し、それを必要なメタデータに変換するクエリを作成します。私がやりたいのは、このクエリを現在の評価プラグインに保存して、投稿が評価されるたびに、新しいテーマに移行するときに必要なメタデータを保存することです。私が言ったように、私は PHP の初心者ですが、SQL で自分自身を保持することができるので、Wordpress データベースに対して次のクエリを実行する方法を教えてください。

ありがとう!

SET @post_id = 1110;
SET SESSION group_concat_max_len = 1000000;

insert into wp_postmeta (post_id,meta_key,meta_value)
  SELECT
    rating_postid
    ,'like'
    ,CONCAT
      ('a:', COUNT(rating_id), ':{',
        (SELECT CONCAT( GROUP_CONCAT(meta_data_vote SEPARATOR ''), '}') 
         FROM
          (SELECT CONCAT
            ('i:',
             @curRow := @curRow + 1,
             ';a:2:{s:7:"',
             'user_id',
             '";s:1:"0";s:2:"ip";s:16:"',
             '-127-000-000-001',
             '";}'
            ) AS meta_data_vote
           FROM wp_ratings JOIN
             (SELECT @curRow := -1 AS j) r
              WHERE rating_postid = @post_id
                and rating_rating > 0
             )AS meta_data_votes
          )
      ) AS new_ratings_meta_data
  FROM wp_ratings l
  WHERE rating_postid = @post_id
    and rating_rating > 0

投稿 ID 変数は、評価対象の投稿 ID と同じにする必要があることに注意してください。これは、Wordpress の PHP では $post_id であると思います。

4

1 に答える 1

2

を使用しwpdbます。これは、PHP のmysql(はい、mysql) 関数の非常に単純なラッパーです。

$results = $wpdb->query($your_complicated query); // Congrats on actually knowing how to write SQL :)

有効な SQL をそのメソッドにフィードすることができ、クエリと同じように機能するはずですが、クエリを「スタック」することはできません。mysqlスタッククエリを許可しPDOます(ただし、私はそれらのファンではなく、妄想的ですべてです)が、前述のようにwpdbまだmysql関数を使用しています。

また、ハードコードされた WordPress テーブル名を$wpdb同等のものに置き換える必要があります。たとえば、代わりwp_posts$wpdb->posts. これは、wp_プレフィックスが変更可能であるためです。これはデフォルトであり、非常に一般的ですが、変更することができ、簡単に変更できます。への簡単な編集wp-config.phpです。

于 2013-03-02T15:00:49.757 に答える