3

1つのカテゴリのすべての製品のリストを作成したwoocommプラグインでコード(ショートコード)を見つけて変更できるようにしようとしています... 1時間経っても運がなく、まだ見つかりません。

だから私はそれを自分でコーディングし始め(車輪の再発明)、ここで私が得ようとしているもの

カテゴリID="151"からすべての製品を取得し、名前、パーマリンクなどを出力できるようにします...

これが今のコードで、すべてを返します。そして私はそれをフィルタリングする方法がわかりません

{
$args = array(
    'post_type' => 'product',
    'posts_per_page' => 99
);

$loop = new WP_Query( $args );
if ( $loop->have_posts() ) {
while ( $loop->have_posts() ) : $loop->the_post();
    //echo get_title()."<br/>";
    var_dump($loop);
endwhile;
} 
4

3 に答える 3

8

これが私が見つけたコードであり、私のニーズに合わせて変更します

function get_me_list_of($atts, $content = null)
{   
    $args = array( 'post_type' => 'product', 'posts_per_page' => 10, 'product_cat' => $atts[0], 'orderby' => 'rand' );

    $loop = new WP_Query( $args );

    echo '<h1 class="upp">Style '.$atts[0].'</h1>';
    echo "<ul class='mylisting'>";
    while ( $loop->have_posts() ) : $loop->the_post(); 
    global $product; 

    echo '<li><a href="'.get_permalink().'">'.get_the_post_thumbnail($loop->post->ID, 'thumbnail').'</a></li>';

    endwhile; 

    echo "</ul>";

    wp_reset_query(); 

}

?>
于 2013-03-11T05:25:43.960 に答える
4

[product_category]で定義され/woocommerce/includes/class-wc-shortcodes.phpているショートコードは、特にWoocommerceが絶えず進化しているため、このための優れた出発点です。

その本質は、ページ付けを行うためにいくつかの追加コードが追加され、Woocommerce設定から並べ替え順序を設定し、製品が表示可能としてマークされているかどうかを確認する標準のWP_Queryです。

したがって、ショートコード関連のコードを取り除き、特定のスラッグを持つカテゴリから表示される製品を取得する関数が必要な場合は、次のようになります。

function getCategoryProducts($category_slug) {
    // Default Woocommerce ordering args
    $ordering_args = WC()->query->get_catalog_ordering_args();

    $args = array(
            'post_type'             => 'product',
            'post_status'           => 'publish',
            'ignore_sticky_posts'   => 1,
            'orderby'               => $ordering_args['orderby'],
            'order'                 => $ordering_args['order'],
            'posts_per_page'        => '12',
            'meta_query'            => array(
                array(
                    'key'           => '_visibility',
                    'value'         => array('catalog', 'visible'),
                    'compare'       => 'IN'
                )
            ),
            'tax_query'             => array(
                array(
                    'taxonomy'      => 'product_cat',
                    'terms'         => array( esc_attr( $category_slug ) ),
                    'field'         => 'slug',
                    'operator'      => 'IN' // Possible values are 'IN', 'NOT IN', 'AND'.
                )
            )
        );

    if ( isset( $ordering_args['meta_key'] ) ) {
            $args['meta_key'] = $ordering_args['meta_key'];
    }
    $products = new WP_Query($args);

    woocommerce_reset_loop();
    wp_reset_postdata();

    return $products;
}

スラッグを渡すと、Woocommerce設定で構成したのと同じ順序を使用して、標準のワードプレス投稿コレクションが返されます。

于 2014-06-02T07:45:31.673 に答える
4

「カスタムページ」用の「Fabrics」製品を入手したかったのと同様の問題がありました。これが私が使用したコードです。

<ul class="products">
<?php
    $args = array(
        'post_type' => 'product',
        'posts_per_page' => 12,
        'product_cat' => 'fabrics'
        );
    $loop = new WP_Query( $args );
    if ( $loop->have_posts() ) {
        while ( $loop->have_posts() ) : $loop->the_post();
            woocommerce_get_template_part( 'content', 'product' );
        endwhile;
    } else {
        echo __( 'No products found' );
    }
    wp_reset_postdata();
?>
</ul><!--/.products-->

上記のコードを使用すると、デフォルトのインラインスタイル、クラス、およびその他の必要なタグを取得できます。

于 2015-02-05T21:24:30.257 に答える