Yoast\WP\SEO\Dashboard\Infrastructure\Score_Results\SEO_Score_Results
SEO_Score_Results_Collector::build_select()
Builds the select statement for the SEO scores query.
Метод класса: SEO_Score_Results_Collector{}
Хуков нет.
Возвращает
Массив<Строку,
. string> The select statement for the SEO scores query.
Использование
// private - только в коде основоного (родительского) класса $result = $this->build_select( $seo_score_groups, ?bool $is_troubleshooting ): array;
- $seo_score_groups(SEO_Score_Groups_Interface[]) (обязательный)
- All SEO score groups.
- ?bool $is_troubleshooting (обязательный)
- -
Код SEO_Score_Results_Collector::build_select() SEO Score Results Collector::build select Yoast 24.4
private function build_select( array $seo_score_groups, ?bool $is_troubleshooting ): array { $select_fields = []; $select_replacements = []; // When we don't troubleshoot, we're interested in the amount of posts in a group, when we troubleshoot we want to gather the actual IDs. $select_operation = ( $is_troubleshooting === true ) ? 'GROUP_CONCAT' : 'COUNT'; $selected_info = ( $is_troubleshooting === true ) ? 'I.object_id' : '1'; foreach ( $seo_score_groups as $seo_score_group ) { $min = $seo_score_group->get_min_score(); $max = $seo_score_group->get_max_score(); $name = $seo_score_group->get_name(); if ( $min === null || $max === null ) { $select_fields[] = "{$select_operation}(CASE WHEN I.primary_focus_keyword_score = 0 OR I.primary_focus_keyword_score IS NULL THEN {$selected_info} END) AS %i"; $select_replacements[] = $name; } else { $select_fields[] = "{$select_operation}(CASE WHEN I.primary_focus_keyword_score >= %d AND I.primary_focus_keyword_score <= %d THEN {$selected_info} END) AS %i"; $select_replacements[] = $min; $select_replacements[] = $max; $select_replacements[] = $name; } } $select_fields = \implode( ', ', $select_fields ); return [ 'fields' => $select_fields, 'replacements' => $select_replacements, ]; }