wordpress サイトに Google マップがあります。このマップは、投稿から作成されたマーカーを収集します。もう少しわかりやすく説明すると、ユーザーがアイテムを追加すると、そのアイテムは場所に基づいてマップに配置され、合計在庫を合計する必要があります。各場所は、1 つのマーカーと、そのマーカーの製品の総在庫のみを生成する必要があります。私はいくつかのドロップダウンを選択して、マーカーを使用してフィルタリングし、変更時に ajaxed php ファイルを更新します。これにより、結果の json ファイルが作成され、マップ JavaScript がループして表示されます。
すべてが表示されていますが、マーカーを場所ごとにグループ化したり、総在庫を表示したりすることができません。究極の解決策は、json ファイルを生成する php スクリプトを使用して、位置ごとに 1 つのマーカーを合計で作成し、javascript でフィルタリングする必要をなくすことだと思います。これは、JSON ファイルを作成する私の PHP です。
<?php
//Header
include "../../../../wp-blog-header.php";
global $wpdb;
//$wpdb->show_errors();
$eq_type = $_GET['eq_type'];
$sql = " SELECT wp_posts.ID, wp_postmeta.meta_value, wp_postmeta.meta_key
FROM wp_posts
LEFT JOIN wp_postmeta
ON wp_posts.ID = wp_postmeta.post_id
WHERE wp_posts.post_type = 'equipment'
AND wp_posts.post_status = 'publish'
AND wp_postmeta.meta_key NOT LIKE '%_yoast_wpseo%'
AND wp_postmeta.meta_key NOT LIKE '%_edit%'
";
$posts = $wpdb->get_results($sql);
$arr = array();
foreach ($posts as $post):
$arr["item-".$post->ID][$post->meta_key] = $post->meta_value;
//print $post->ID.' - '.$post->meta_key." - ".$post->meta_value."<br />";
endforeach;
$fp = fopen('../json/json-equipment.json', 'w');
fwrite($fp, json_encode($arr));
fclose($fp);
?>
そして、次のような JSON 出力を生成します...
{
"item-111":
{"eq_type":"Dump Truck","eq_region":"Alberta","eq_total_inventory":"123"},
"item-112":
{"eq_type":"Dump Truck","eq_region":"British Columbia","eq_total_inventory":"234"},
"item-113":
{"eq_type":"Dump Truck","eq_region":"British Columbia","eq_total_inventory":"23"},
"item-114":
{"eq_type":"Digger","eq_region":"Manitoba","eq_total_inventory":"23"}
}
うまくいけば、私は十分に明確であり、場所ごとに1つのマーカーのみを生成する必要があり、各場所の合計インベントリが追加され、タイプおよび/または地域でフィルタリングされます...しかし、グループ化と合計は本当に困惑しているものです自分。どんな情報でもお尋ねください!