Google Search Console API несколько измерений

У меня небольшая проблема с добавлением нескольких измерений в 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 в уме.

2

Решение

Это было просто.

$ Filters-> setDimension ( «страна»);

$ Filters-> setOperator ( «равно»);

$ Filters-> setExpression ($ страна);

$ Filters2-> setDimension ( «устройство»);

$ Filters2-> setOperator ( «равно»);

$ Filters2-> setExpression ($ устройства);

$> Фильтры setFilters ($ фильтры);

$> Фильтры setFilters (массив ($ фильтры, $ filters2));

$ Request-> setDimensionFilterGroups (массив ($ фильтр));

Работает как шарм.

2

Другие решения

Большое спасибо за то, что поделился этим, Ник — это действительно помогло!
Одна маленькая вещь: вам не понадобится следующее:

$filter->setFilters($filters);

как вы устанавливаете фильтры правильно со следующей строкой кода.

Кроме того, я застрял на следующей строке:

$request->setDimensionFilterGroups(array($filter));

как я передавал объект $ filter как есть, вместо использования массива.
Я действительно нашел это нелогичным: это единственный объект, который нужен методу setDimensionFilterGroups; Мне все еще интересно, зачем ему нужен массив вместо этого.

Ура,

Сэл

1

Ответ Ника помог мне начать, но в настоящее время он не завершен. Чтобы помочь другим разработчикам в поиске ответа, надеюсь, это поможет вам:

$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 операция в настоящее время не поддерживается для фильтров.

Проверьте Вот и этот ответ Вот.

0
По вопросам рекламы [email protected]