標準のWooCommerceプロダクトウィジェットのようなWooCommerceプロダクトウィジェットを作成したいと思いますが、カテゴリでフィルタリングするオプションがあります。私は特定のカテゴリの製品を表示するためのショートコードがあることを知っていますが、私は標準的なサムネイルビューが気に入らないのですが、WooCom製品ウィジェットのようなリストを持つことを好みます。 Githubの上カテゴリフィルタ付きのWoocommerceプロダクトウィジェットの作成
、私はWooCom製品は、製品IDのフィルタでウィジェットを追加することを可能にする、次のコードを発見した:
<?php
/*
Plugin Name: Woocommerce Custom Widget Product
Description: This plugin help display a list of customs products on your website
Author: Binh Nguyen
Version: 1.0
Author URI: http://vietcomic.net/
*/
if (! defined('ABSPATH')) exit; // Exit if accessed directly
class Bi_Widget_Product extends WP_Widget
{
function __construct()
{
parent::__construct(
'woocommerce_ndbProducts',
__('WP Customs Products', 'ndb'),
array('description' => __('This plugin help display a list of customs products on your website.', 'ndb'))
);
}
public function widget($args, $instance) {
extract($args);
$title = apply_filters('widget_title', $instance['title']);
$ids = $instance['ids'];
$arr_id = explode(',',$ids);
$query_args = array(
'post_status' => 'publish',
'post_type' => 'product',
'no_found_rows' => 1,
'post__in' => $arr_id
);
$r = new WP_Query($query_args);
if ($r->have_posts()) {
echo $before_widget;
if ($title)
echo $before_title . $title . $after_title;
echo '<ul class="product_list_widget">';
while ($r->have_posts()) {
$r->the_post();
global $product;
?>
<li>
<a href="<?php echo esc_url(get_permalink($product->id)); ?>" title="<?php echo esc_attr($product->get_title()); ?>">
<?php echo $product->get_image(); ?>
<?php echo $product->get_title(); ?>
</a>
<?php if (! empty($show_rating)) echo $product->get_rating_html(); ?>
<?php echo $product->get_price_html(); ?>
</li>
<?php
}
echo '</ul>';
echo $after_widget;
}
wp_reset_postdata();
echo $content;
}
// Widget Backend
public function form($instance){
$title = (isset($instance['title'])) ? $instance['title'] : __('Products', 'ndb');
$ids = $instance['ids'];
?>
<p>
<label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title :'); ?></label>
<input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" />
</p>
<p>
<label for="<?php echo $this->get_field_id('ids'); ?>"><?php _e('IDs :'); ?></label>
<input class="widefat" id="<?php echo $this->get_field_id('ids'); ?>" name="<?php echo $this->get_field_name('ids'); ?>" type="text" value="<?php echo esc_attr($ids); ?>" />
</p>
<?php
}
public function update($new_instance, $old_instance) {
$instance = array();
$instance['title'] = (! empty($new_instance['title'])) ? strip_tags($new_instance['title']) : '';
$instance['ids'] = (! empty($new_instance['ids'])) ? strip_tags($new_instance['ids']) : '';
return $instance;
}
}
add_action('widgets_init', function(){
register_widget('Bi_Widget_Product');
});
あなたの任意のWordpressの教祖のヘルプ私はので、私はフィルタリングすることができ、これを適応することはでき製品IDの代わりにカテゴリにありますか?私は自分で試してみるが、間違いなくあなたの助けを使うことができる。
ご返信いただきありがとうございます。だから私はどのように特定のカテゴリを持つ製品を取得するウィジェットでこれを実装する必要がありますか? &カテゴリのメソッドはなぜ機能しないのですか? WP codex:https://codex.wordpress.org/Class_Reference/WP_Query - > Category Parametersのパラグラフを参照してください。 – BarrieO
厳密に上記の方法はタクソノミーを探し、用語の詳細を示します。あなたは 'var_dump()'を見ればこれらを見ることができますが、このコードを共有して特定のカテゴリの特定の製品投稿を得ることができます。文字の制限は私を許可しませんが、ソリューション2の上記の答えを確認します。私はそれを編集しました。 – omukiguy