我的 wordpress 网站中有一张谷歌地图,这张地图收集了从帖子创建的标记。为了更好地解释,用户添加一个项目,然后根据位置将该项目放置在地图上,然后需要总计总库存。每个位置应该只生成一个标记和该标记产品的总库存。我有一些选择下拉列表让用户过滤标记,并在更改时更新一个 ajaxed php 文件,该文件构建一个结果的 json 文件,然后映射 javascript 循环并显示该文件。
我显示了所有内容,但是我无法按位置和要显示的总库存对标记进行分组。我认为最终的解决方案是让生成 json 文件的 php 脚本为每个位置创建一个带有总数的标记,从而无需使用 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"}
}
所以希望我已经足够清楚了,每个位置只需要生成一个标记,每个位置的总库存加起来按类型和/或区域过滤......但是分组和总计才是真正难倒的我。询问任何信息!