0

我有这段代码适用于插件 1 > facetwp 过滤器

/** custom index to display a dropdown facet as a range
 ** change 'CHANGE_ME' to the name of your facet
 ** facet settings should be a dropdown type and the datasourc
 ** of the value you want to show as a range **/

    add_filter( 'facetwp_index_row', function( $params, $class ) {
        if ( 'baths' == $params['facet_name'] ) {  
            $range = $params['facet_value'];
            switch ( true ) {
                case ( $range <= 1 ):
                    $params['facet_value'] = '1';
                    $params['facet_display_value'] = '1';
                    break;
                case ( $range <= 2 ):
                    $params['facet_value'] = '2';
                    $params['facet_display_value'] = '2';
                    break;
                case ( $range <= 3 ):
                    $params['facet_value'] = '3';
                    $params['facet_display_value'] = '3';
                    break;
                case ( $range <= 4 ):
                    $params['facet_value'] = '4';
                    $params['facet_display_value'] = '4';
                    break;
                case ( $range >= 5 ):
                    $params['facet_value'] = '999';
                    $params['facet_display_value'] = '5+';
                    break;   
                default: // no value
                    $params['facet_value'] = ''; // skip indexing
            }
        } 
        return $params;
    }, 10, 2 );

它把我的下拉菜单变成了一个没什么特别的范围...... 在此处输入图像描述

然后我切换到plugin 2 > gridbuilder原理是一样的

(请仔细阅读我们现在在插件编号 2 我正在尝试根据他们的文档使用 gridbuilder 规则重做相同的代码)

这里是他们的文档,我假设等效的过滤器 /indexer/row

function prefix_row_data( $row, $object_id, $facet ) {

    // We only process date facet type.
    if ( 'date' !== $facet['type'] ) {
        return $row;
    }

    // We change the date format to match date facet format (Y-m-d or Y-m-d h:i:s).
    $row['facet_value'] = date( 'Y-m-d', strtotime( $row['facet_value'] ) );
    // Return row to insert in the index table.
    return $row;

}

add_filter( 'wp_grid_builder/indexer/row', 'prefix_row_data', 10, 3 );

毫无疑问,我向您展示了我尝试做的事情...我知道它不会那样工作...但是您明白了。

根据他们的文档,他们对我的代码的编写逻辑是什么?php专家不客气

function prefix_row_data( $row, $object_id, $facet ) {

    // We only process date facet type.
    if ( 'baths' !== $facet['type'] ) {
        return $row;
    }
    
     $range = $params['facet_value'];
        switch ( true ) {
            case ( $range <= 1 ):
                $params['facet_value'] = '1';
                $params['facet_display_value'] = '1';
                break;
            case ( $range <= 2 ):
                $params['facet_value'] = '2';
                $params['facet_display_value'] = '2';
                break;
            case ( $range <= 3 ):
                $params['facet_value'] = '3';
                $params['facet_display_value'] = '3';
                break;
            case ( $range <= 4 ):
                $params['facet_value'] = '4';
                $params['facet_display_value'] = '4';
                break;
            case ( $range >= 5 ):
                $params['facet_value'] = '999';
                $params['facet_display_value'] = '5+';
                break;   
            default: // no value
                $params['facet_value'] = ''; // skip indexing
        }
    } 
    return $params;
}

add_filter( 'wp_grid_builder/indexer/row', 'prefix_row_data', 10, 3 );

我正在尝试修改的当前下拉列表 在此处输入图像描述

4

0 回答 0