У меня небольшая проблема с добавлением нескольких измерений в 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
в уме.
Это было просто.
$ Filters-> setDimension ( «страна»);
$ Filters-> setOperator ( «равно»);
$ Filters-> setExpression ($ страна);
$ Filters2-> setDimension ( «устройство»);
$ Filters2-> setOperator ( «равно»);
$ Filters2-> setExpression ($ устройства);
$> Фильтры setFilters ($ фильтры);
$> Фильтры setFilters (массив ($ фильтры, $ filters2));
$ Request-> setDimensionFilterGroups (массив ($ фильтр));
Работает как шарм.
Большое спасибо за то, что поделился этим, Ник — это действительно помогло!
Одна маленькая вещь: вам не понадобится следующее:
$filter->setFilters($filters);
как вы устанавливаете фильтры правильно со следующей строкой кода.
Кроме того, я застрял на следующей строке:
$request->setDimensionFilterGroups(array($filter));
как я передавал объект $ filter как есть, вместо использования массива.
Я действительно нашел это нелогичным: это единственный объект, который нужен методу setDimensionFilterGroups; Мне все еще интересно, зачем ему нужен массив вместо этого.
Ура,
Сэл
Ответ Ника помог мне начать, но в настоящее время он не завершен. Чтобы помочь другим разработчикам в поиске ответа, надеюсь, это поможет вам:
$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
,
например
$groups = array(['device', 'mobile', 'equals'], ['device', 'tablet', 'equals']);
Это потому что OR
операция в настоящее время не поддерживается для фильтров.