2016-07-03 12 views
1

私のショップのアーカイブページにすべての商品を表示しようとしています。私は彼らのIDを取得したい。私は何とか製品のクエリにアクセスし、そのIDを取得したいwp_head上で動作する鉱山のフックをチェックWoocommerceはアーカイブページに商品を表示します

if(is_product_category()) 

を使用しています。

if(is_product_category()) { 
    $current_category = get_queried_object(); 
    $category_id = $current_category->term_id; 
    $category_name = $current_category->name; 

これは私がこれまでのところ、私は答えを見つけたいくつかの研究の後、現在のカテゴリID

答えて

0

を得るために、それは誰もが同じで戦うためにここにある、かなり簡単だったしたコードです問題。

woocommerce_product_loop_start(false); 
    while (have_posts()) { 
     the_post(); 
     $id = get_the_ID(); 
    } 
    woocommerce_product_loop_end(false); 

これで、現在のページに対してwoocommerceループが再度呼び出され、必要な情報を取得できます。 PS:完了後にクエリをリセットする必要がありますか?

+0

カスタムクエリの後に、 '' 'wp_reset_postdata()' 'を呼び出す必要があります。しかし、この場合、元のループで作業しているので、代わりに '' 'wp_reset_query()' ''を使いたいとします。これらを実行しないと、後で起こるループは、すでにループを終えているので、ループの最後のポストから開始します。私はあなたのためのループを含まない代替の回答を掲示しました。 –

0

あなただけのプラグインフォルダ内のフォルダを作成し、そこにコードを貼り付けたり、また、テーマfunction.phpファイル内のコードを貼り付けることができwoocommerce製品IDに

http://www.remicorson.com/easily-find-woocommerce-products-id/

を取得するためにここに従うことができます。これがあなたを助けることを願っています。

0

アーカイブページにいる場合は、メインクエリに投稿が含まれている必要があります。最も簡単な方法は、$ wp_queryグローバルの "​​posts"プロパティからIDを取得することです。配列の配列から各インデックスを取得するwp_list_pluckというユーティリティ関数があるので、代わりにIDの配列になります。

global $wp_query; 
$ids = wp_list_pluck($wp_query->posts, "ID"); 

wp_list_pluckがアレイを反復するループを使用している間、それはhave_postsのワードプレスループスタイルを(使用するよりも良好であることに注意)、the_post()。これは、$ wp_queryと$ postグローバル間ですべてのデータを移動しているわけではなく、クエリーをリセットすることを煩わせる必要もないからです。

関連する問題