Wordpressデータベースからデータを抽出しようとしていますので、新しいデータベースに取り込めるようになりましたが、いくつかの問題がありました。これは、Wordpressのテーブルのいくつかがどのようになっているかを示す小さなサンプルです。Wordpressデータベーステーブルからデータを抽出しています
wp_posts
id | post_type | post_status |
----------------------------------
1 | portfolio | published | ... other data
wp_postmeta
id | post_id | meta_key | meta_value |
-----------------------------------------------------------------------
1 | 1 | item_submission_title | Some title | ... other data
2 | 1 | item_technology | a:1:{i:0;s:4:"2372";} |
3 | 1 | item_description | Some description |
wp_terms
id | term_id | name |
--------------------------------
1 | 2372 | Some name | ... other data
だから、基本的に、私はpost_typeはポートフォリオとpost_statusが公開されているwp_postsからすべてのIDを取得する必要があります。
これらのIDを使用して、私は、私のwp_postmetaテーブルに表示されている3つのmeta_keyのmeta_valueを取得する必要があります。
item_technologyのmeta_valueはシリアル化されているため、シリアル化を解除する必要があります。私はそのID(2372)を取得し、これを使用してwp_termsテーブルからさらにデータを取得する必要があります。
私はもっと多くのことをする必要がありますが、上記を達成すると、これを最もうまくやる方法がわかります。私は何とかここに結合を使用することができますが、わからない気がします。 現時点では、私の試みは非常に不完全で不完全です。これは私が現在持っているものです。
$conn = Database::getInstance();
$ids = getIDs($conn);
$dataArray = array();
foreach ($ids as $row) {
$data = getData($conn, $row['id']);
$dataArray[] = $data;
}
function getIDs($conn) {
$query = "SELECT `id` FROM `wp_posts` WHERE `post_type` = \"portfolio\" and `post_status` = \"publish\"";
$sql = $conn->dbc->prepare($query);
$sql->execute();
$row = $sql->fetchAll();
return $row;
}
function getData($conn, $id) {
$query = "SELECT `meta_value` FROM `wp_postmeta` WHERE `post_id` = $id AND `meta_key` = \"item_submission_title\"";
$sql = $conn->dbc->prepare($query);
$sql->execute();
$row = $sql->fetchAll();
return $row;
}
私が何を達成するための最良の方法は?
おかげ