Automattic\WooCommerce\Internal\Admin\Reports
HposLegacyOrderReportQueryBuilder::translate_legacy_sql_fragment
Translate legacy posts.<col> (and bare ID / post_date) references in an arbitrary SQL fragment.
Matches are bounded by \b so tokens embedded in longer identifiers (e.g. product_ID, posts.post_date_gmt) are left untouched.
Метод класса: HposLegacyOrderReportQueryBuilder{}
Хуков нет.
Возвращает
string. Translated fragment safe to drop into an HPOS query.
Использование
// private - только в коде основоного (родительского) класса $result = $this->translate_legacy_sql_fragment( $fragment ): string;
- $fragment(строка) (обязательный)
- Caller-supplied SQL fragment.
Код HposLegacyOrderReportQueryBuilder::translate_legacy_sql_fragment() HposLegacyOrderReportQueryBuilder::translate legacy sql fragment WC 11.2.2
private function translate_legacy_sql_fragment( string $fragment ): string {
$map = $this->legacy_to_hpos_column_map();
// Qualified `posts.<col>` references first, then the bare tokens legacy
// callers use unqualified. Callbacks avoid `$`/`\` replacement-string pitfalls.
$fragment = (string) preg_replace_callback(
'/\bposts\.(ID|post_date|post_parent|post_status|post_type)\b/',
static function ( $matches ) use ( $map ) {
return $map[ $matches[1] ];
},
$fragment
);
return (string) preg_replace_callback(
'/\b(ID|post_date)\b/',
static function ( $matches ) use ( $map ) {
return $map[ $matches[1] ];
},
$fragment
);
}