function my_custom_product_filters( $post_type ) {
$value1 = '';
$value2 = '';
// Check if filter has been applied already so we can adjust the input element accordingly
if( isset( $_GET['my_filter'] ) ) {
switch( $_GET['my_filter'] ) {
// We will add the "selected" attribute to the appropriate <option> if the filter has already been applied
case 'value1':
$value1 = ' selected';
break;
case 'value2':
$value2 = ' selected';
break;
}
}
// Check this is the products screen
if( $post_type == 'product' ) {
// Add your filter input here. Make sure the input name matches the $_GET value you are checking above.
echo '<select name="my_filter">';
echo '<option value>Show all value types</option>';
echo '<option value="value1"' . $value1 . '>First value</option>';
echo '<option value="value2"' . $value2 . '>Second value</option>';
echo '</select>';
}
}
add_action( 'restrict_manage_posts', 'my_custom_product_filters' );
1条答案
按热度按时间jw5wzhpr1#
您的问题非常模糊,因此我假设您的自定义列显示每个产品的 meta信息。
添加筛选器
首先,您需要使用
restrict_manage_posts
WordPress操作将您自己的字段添加到“产品”管理页面顶部的“过滤器”区域:**注意:**从WP4.4开始,此操作提供
$post_type
作为参数,因此您可以轻松识别正在查看的帖子类型。在WP4.4之前,您需要使用$typenow
全局或get_current_screen()
函数来检查此. This Gist offers a good example。应用过滤器
为了让过滤器真正起作用,我们需要在加载'products'管理页面时在WP_Query中添加一些额外的参数。为此,我们需要使用
pre_get_posts
WordPress操作,如下所示:这是自定义过滤器的基础,它适用于任何帖子类型(包括WooCommerce shop_orders)。您还可以为 meta查询设置“比较”值(以及任何其他可用的选项),或者根据需要调整WP_Query的不同方面。