>

내 고객이 제품으로 모든 woocommerce 제품을 표시하려고합니다 SKU .

일반적으로 디스플레이 제품에 다음 코드를 사용했습니다.

$postArg = array('post_type'=>'product',
                            'post_status'=>'publish',
                            'posts_per_page'=>-1,
                            'orderby'=>'data',
                            'order'=>'DESC',
                    );
            $queryGetFiles = get_posts($postArg);

그러나 이제 내 고객은 제품 SKU 로 모든 제품을 보여주고 싶다  앞면에.

1041-14, 1041-12, 1041-16, 1041,2001,3501과 같은 SKU

"-" 가없는 모든 제품의 SKU 값과 디스플레이가 다릅니다  캐릭터

어떻게해야합니까?


  • 답변 # 1

    이것을 시도해보십시오

    $postArg = array(
           'post_type'      => 'product',
           'post_status'    => 'publish',
           'posts_per_page' => -1,
           'meta_key'       => '_sku',
           'orderby'        => 'meta_value' // meta_value_num if ordered by intergers
           'order'          => 'DESC',
    );
    $queryGetFiles = get_posts($postArg);
    
    

    이 포스트의 도움으로 대답

  • 답변 # 2

    function.php에 코드를 넣어보십시오

    add_filter('woocommerce_get_catalog_ordering_args', 'am_woocommerce_catalog_orderby');
        function am_woocommerce_catalog_orderby( $args ) {
            $args['meta_key'] = '_sku';
            $args['orderby'] = 'meta_value_num';
            $args['order'] = 'desc'; 
            return $args;
        }
    
    

  • 답변 # 3

    이것을 시도하십시오. 이것이 완벽하게 작동하는지 알려주세요 ....

    /**
     * Adds the ability to sort products in the shop based on the SKU
     * Can be combined with tips here to display the SKU on the shop page: https://www.skyverge.com/blog/add-information-to-woocommerce-shop-page/
     */
    function sv_add_sku_sorting( $args ) {
    	$orderby_value = isset( $_GET['orderby'] ) ? wc_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );
    	if ( 'sku' == $orderby_value ) {
    		$args['orderby'] = 'meta_value';
        		$args['order'] = 'asc'; 
        		// ^ lists SKUs alphabetically 0-9, a-z; change to desc for reverse alphabetical
    		$args['meta_key'] = '_sku';
    	}
    	return $args;
    }
    add_filter( 'woocommerce_get_catalog_ordering_args', 'sv_add_sku_sorting' );
    
    function sv_sku_sorting_orderby( $sortby ) {
    	$sortby['sku'] = 'Sort by SKU';
    	// Change text above as desired; this shows in the sorting dropdown
    	return $sortby;
    }
    add_filter( 'woocommerce_catalog_orderby', 'sv_sku_sorting_orderby' );
    add_filter( 'woocommerce_default_catalog_orderby_options', 'sv_sku_sorting_orderby' );
    
    

  • 답변 # 4

    지원해 주셔서 감사합니다.

    다음을 사용하여 스스로 해결했습니다.

    $postArg = array('post_type'=>'product',
                                'post_status'=>'publish',
                                'posts_per_page'=>-1,
                                'orderby'=>'date',
                                'order'=>'DESC',
                                'meta_query' => array(
                                        array(
                                                'key' => '_sku',
                                                'value' => '-',
                                                'compare' => 'NOT LIKE'
                                        )
                                    ),
                        );
    
    

관련 자료

  • 이전 bash - 알파벳이 아닌 문자를 '-'로 바꾸려면 tr을 사용하면 문자열 끝에 여분의 문자가 추가됩니다
  • 다음 python - 팬더 시리즈에서 CSV로