我搜索了又搜索,但一直无法找到答案,所以提前感谢您的帮助!
我想显示所有未分配特定属性的产品的列表(在管理门户中的产品页面上)(以便我们可以轻松找到需要更新的产品)。
我已经使用此代码的变体设置了相同的功能来显示缺少其他标准(运输类别、重量等)的产品,并且效果很好,但我不确定如何修改它以显示没有其他标准的产品pa_sort-chassis 属性...到目前为止,这就是我所得到的 - 但它不会产生任何结果。
add_action( 'admin_notices', 'products_no_chassisattribute_admin' );
function products_no_chassisattribute_admin(){
global $pagenow, $typenow;
if ( 'edit.php' === $pagenow && 'product' === $typenow ) {
echo '<div class="notice notice-warning is-dismissible"><h3>Products with NO Sort By Chassis Attribute</h3><ul>';
$args = array(
'status' => 'publish',
'visibility' => 'visible',
'limit' => -1
);
$products = wc_get_products( $args );
foreach ( $products as $product ) {
if ( ! $product = wc_get_products( array( 'pa_sort-chassis' => '' ) )) {
echo '<li><a href="' . esc_url( get_edit_post_link( $product->get_id() ) ) . '">' . $product->get_name() . '</a></li>';
}
}
echo '</ul></div>';
}
我修改了我已经使用的代码,但它没有产生任何结果
显示未分配
"pa_sort-chassis"
属性的产品!
请尝试此代码,它应该显示在产品页面的管理门户中未分配“pa_sort-chassis”属性的产品。
add_action( 'admin_notices', 'products_no_chassisattribute_admin' );
function products_no_chassisattribute_admin() {
global $pagenow, $typenow;
if ( 'edit.php' === $pagenow && 'product' === $typenow ) {
echo '<div class="notice notice-warning is-dismissible"><h3>Products with NO Sort By Chassis Attribute</h3><ul>';
$args = array(
'status' => 'publish',
'visibility' => 'visible',
'limit' => -1
);
$products = wc_get_products( $args );
foreach ( $products as $product ) {
$product_attributes = $product->get_attributes();
if ( ! array_key_exists( 'pa_sort-chassis', $product_attributes ) ) {
echo '<li><a href="' . esc_url( get_edit_post_link( $product->get_id() ) ) . '">' . $product->get_name() . '</a></li>';
}
}
echo '</ul></div>';
}
}
使用
get_attributes()
方法检索产品的所有属性。然后,检查键 'pa_sort-chassis'
是否存在于 $product_attributes
数组中。如果不存在,则表示该商品没有分配"pa_sort-chassis"
属性,会显示在列表中。
条件
if (! $product = wc_get_products(array('pa_sort-chassis' => '')))
将始终评估为 true,因为您正在为 $product 分配一个值,而不是检查它的存在。
这将导致循环始终执行 if 块内的 echo 语句。
function products_no_chassisattribute_admin() {
global $pagenow, $typenow;
if ( 'edit.php' === $pagenow && 'product' === $typenow ) {
echo '<div class="notice notice-warning is-dismissible"><h3>Products with NO Sort By Chassis Attribute</h3><ul>';
$args = array(
'status' => 'publish',
'visibility' => 'visible',
'limit' => -1
);
$products = wc_get_products( $args );
foreach ( $products as $product ) {
$product_attributes = $product->get_attributes();
if ( empty( $product_attributes['pa_sort-chassis'] ) ) {
echo '<li><a href="' . esc_url( get_edit_post_link( $product->get_id() ) ) . '">' . $product->get_name() . '</a></li>';
}
}
echo '</ul></div>';
}
}