在 WooCommerce 管理员订单列表中显示产品图片的问题
Issue with displaying product image on WooCommerce admin orders list
由于 WooCommerce 不在订单页面上显示产品图片,我创建了一个 PHP 函数来添加新列并显示我需要的所有详细信息,但我遇到了一些问题。
当旧订单中的一个产品被删除时,订单出现错误,因为 image/product 不存在并返回严重错误。
谁能给我一个可能的解决方案?
我需要告诉 wordpress“如果这个 image/product 不存在或为空,它会显示一些文本”
// The data of the new custom column in admin order list
add_action( 'manage_shop_order_posts_custom_column' , 'admin_orders_list_column_content', 1, 2 );
function admin_orders_list_column_content( $column, $post_id ){
global $the_order, $post;
if ('custom_column' === $column) {
// Start list
echo '<ul class="orders-list-items-preview">';
// Loop through order items
foreach($the_order->get_items() as $item) {
$product = $item->get_product();
$img = wp_get_attachment_url($product->get_image_id());
if(file_exists($img)){
$img = wp_get_attachment_url($product->get_image_id());
}else{
echo 'texto2';
}
$name = $item->get_name();
$qty = $item->get_quantity();
echo "<li>
<img src=\"$img\" />
<label>$qty</label> $name
</li>";
}
// End list
echo '</ul>';
}
}
wp_get_attachment_url() 将 return 带有附件 URL 的字符串,否则为 false。那么您可以通过 if 条件添加额外的检查吗?
然后你得到:
function action_manage_shop_order_posts_custom_column( $column, $post_id ) {
// Compare
if ( $column == 'custom_column' ) {
// Get order
$order = wc_get_order( $post_id );
// Is a WC_Order
if ( is_a( $order, 'WC_Order' ) ) {
// Start list
echo '<ul class="orders-list-items-preview">';
// Loop through order items
foreach ( $order->get_items() as $item_key => $item ) {
// Get product
$product = $item->get_product();
// Is a WC product
if ( is_a( $product, 'WC_Product' ) ) {
// Getters
$image_id = $product->get_image_id();
$image = wp_get_attachment_url( $image_id );
$name = $item->get_name();
$qty = $item->get_quantity();
// NOT false
if ( $image ) {
$image_output = '<img src=' . $image . ' width="50" height="50">';
} else {
$image_output = __( 'Some text', 'woocommerce' );
}
// Output
echo '<li>' . $image_output . '<label>' . $qty . '</label>' . $name . '</li>';
} else {
// Output
echo '<li>' . __( 'N/A', 'woocommerce' ) . '</li>';
}
}
// End list
echo '</ul>';
}
}
}
add_action( 'manage_shop_order_posts_custom_column' , 'action_manage_shop_order_posts_custom_column', 10, 2 );
由于 WooCommerce 不在订单页面上显示产品图片,我创建了一个 PHP 函数来添加新列并显示我需要的所有详细信息,但我遇到了一些问题。
当旧订单中的一个产品被删除时,订单出现错误,因为 image/product 不存在并返回严重错误。
谁能给我一个可能的解决方案?
我需要告诉 wordpress“如果这个 image/product 不存在或为空,它会显示一些文本”
// The data of the new custom column in admin order list
add_action( 'manage_shop_order_posts_custom_column' , 'admin_orders_list_column_content', 1, 2 );
function admin_orders_list_column_content( $column, $post_id ){
global $the_order, $post;
if ('custom_column' === $column) {
// Start list
echo '<ul class="orders-list-items-preview">';
// Loop through order items
foreach($the_order->get_items() as $item) {
$product = $item->get_product();
$img = wp_get_attachment_url($product->get_image_id());
if(file_exists($img)){
$img = wp_get_attachment_url($product->get_image_id());
}else{
echo 'texto2';
}
$name = $item->get_name();
$qty = $item->get_quantity();
echo "<li>
<img src=\"$img\" />
<label>$qty</label> $name
</li>";
}
// End list
echo '</ul>';
}
}
wp_get_attachment_url() 将 return 带有附件 URL 的字符串,否则为 false。那么您可以通过 if 条件添加额外的检查吗?
然后你得到:
function action_manage_shop_order_posts_custom_column( $column, $post_id ) {
// Compare
if ( $column == 'custom_column' ) {
// Get order
$order = wc_get_order( $post_id );
// Is a WC_Order
if ( is_a( $order, 'WC_Order' ) ) {
// Start list
echo '<ul class="orders-list-items-preview">';
// Loop through order items
foreach ( $order->get_items() as $item_key => $item ) {
// Get product
$product = $item->get_product();
// Is a WC product
if ( is_a( $product, 'WC_Product' ) ) {
// Getters
$image_id = $product->get_image_id();
$image = wp_get_attachment_url( $image_id );
$name = $item->get_name();
$qty = $item->get_quantity();
// NOT false
if ( $image ) {
$image_output = '<img src=' . $image . ' width="50" height="50">';
} else {
$image_output = __( 'Some text', 'woocommerce' );
}
// Output
echo '<li>' . $image_output . '<label>' . $qty . '</label>' . $name . '</li>';
} else {
// Output
echo '<li>' . __( 'N/A', 'woocommerce' ) . '</li>';
}
}
// End list
echo '</ul>';
}
}
}
add_action( 'manage_shop_order_posts_custom_column' , 'action_manage_shop_order_posts_custom_column', 10, 2 );