我在搜索控制台的API
请求中添加多个维度时遇到一个小问题。
如果我将以下内容添加到group by country
,则可以正常使用。
$filters->setDimension("country");
$filters->setOperator("equals");
$filters->setExpression($country);
$filter->setFilters($filters);
$filter->setFilters(array($filters));
$request->setDimensionFilterGroups(array($filter));
但是如果我在设备下面添加另一个维度,它会跳过country
维度,只运行带有设备维度的查询。完全可以在搜索控制台API
网站上根据此操作:
'filters': [{
'dimension': 'country',
'expression': 'ind'
}, {
'dimension': 'device',
'expression': 'MOBILE'
}]
那么,任何想法如何在查询中使用它们?
它可能只是一些PHP code
,但我无法在任何地方找到有关PHP
的多维度或任何示例的任何文档。
答案 0 :(得分:2)
很简单。
$筛选器 - > setDimension( “国家”);
$筛选器 - > setOperator( “等于”);
$筛选器 - > setExpression($国家);
$ filters2-> setDimension( “设备”);
$ filters2-> setOperator( “等于”);
$ filters2-> setExpression($装置);
$滤波器 - > setFilters($过滤器);
$滤波器 - > setFilters(阵列($滤波器,$ filters2));
$请求 - > setDimensionFilterGroups(阵列($滤波器));
像魅力一样。
答案 1 :(得分:0)
尼克的回答确实帮助我开始,但目前还没有完成。为了帮助其他开发人员寻找答案,希望这对您有所帮助:
$filter_group = new Google_Service_Webmasters_ApiDimensionFilterGroup;
$groups = array(['device', 'mobile', 'equals'], ['country', 'GBR', 'equals']);
$filters = array();
if($groups) {
foreach ($groups as $key => $group) {
$filters[$key] = new Google_Service_Webmasters_ApiDimensionFilter;
$filters[$key]->setDimension($group[0]);
$filters[$key]->setExpression($group[1]);
$filters[$key]->setOperator($group[2]);
}
$filter_group->setFilters($filters);
}
$request->setDimensionFilterGroups(array($filter_group));
另请注意,如果在您的过滤器组中,您有两个或更多相同维度但过滤器或expression
的值不同,则它目前无法正常工作。
e.g。
$groups = array(['device', 'mobile', 'equals'], ['device', 'tablet', 'equals']);
这是因为过滤器目前不支持OR
操作。