我的产品有两个重要的代码,分别是EAN-13及其型号。我在SKU中写了EAN-13,在自定义字段中写了产品型号。 SKU可以完美搜索,但数据却不能。
是否可以通过后端办公室搜索产品自定义字段?
请帮助!预先感谢!
答案 0 :(得分:1)
当我寻找几乎类似的问题时,我在https://dominykasgel.com/extend-search-custom-post-types-wordpress-admin/处找到了解决方案,这是我在子主题中用于functions.php的代码:
function extend_admin_search( $query ) {
$custom_fields = array(
"_file_name",
);
if( ! is_admin() )
return;
$search_term = $query->query_vars['s'];
$query->query_vars['s'] = '';
$query->set('_meta_or_title', $search_term);
if ( $search_term != '' ) {
$meta_query = array( 'relation' => 'OR' );
foreach( $custom_fields as $custom_field ) {
array_push( $meta_query, array(
'key' => $custom_field,
'value' => $search_term,
'compare' => 'LIKE'
));
}
$query->set( 'meta_query', $meta_query );
};
}
add_action( 'pre_get_posts', 'extend_admin_search', 6, 2);
add_action( 'pre_get_posts', function( $q )
{
if( $title = $q->get( '_meta_or_title' ) )
{
add_filter( 'get_meta_sql', function( $sql ) use ( $title )
{
global $wpdb;
// Only run once:
static $nr = 0;
if( 0 != $nr++ ) return $sql;
// Modified WHERE
$sql['where'] = sprintf(
" AND ( %s OR %s ) ",
$wpdb->prepare( "{$wpdb->posts}.post_title like '%%%s%%'", $title),
mb_substr( $sql['where'], 5, mb_strlen( $sql['where'] ) )
);
return $sql;
}, 12, 1);
}
}, 12, 1);
免责声明:它是几年前使用的,所以我不确定它现在是否可以正常工作。