Woocommerce добавить тег img на страницу с информацией о заказе администратора
У меня есть сайт WordPress, где клиенты делают изображение с текстом и значками, после обработки через woocommerce и заплатили за это имя изображения 12345.png
сохраняется как Customer_product_image
function add_order_item_meta($item_id, $values) {
$key = 'customer_product_image'; // Define your key here
$value = $values['user_img']; // Get your value here
woocommerce_add_order_item_meta($item_id, $key, $value);
}
И я прекрасно работаю, но теперь я забив головой об стену! Когда купленное изображение отображается на странице подробностей администратора заказа, оно отображается как CUSTOMER_PRODUCT_IMAGE: 1234.png
Как же я могу обернуть это в тег изображения, чтобы изображение там отображалось?
Я искал высоко и низко на Google, но не смог ничего найти, вероятно, я не знаю, что на самом деле искать....
2 ответа
Вы можете использовать фильтр woocommerce_order_item_display_meta_value
вывести изображение. Поместите этот код в ваш файл functions.php, вам нужно изменить атрибут src тега img, чтобы он включал соответствующий URL-адрес перед значением имени файла. Вы также можете изменить метку дисплея с помощью фильтра woocommerce_order_item_display_meta_key
add_filter( 'woocommerce_order_item_display_meta_value', 'modify_order_item_display_value' , 10, 3 );
function modify_order_item_display_value( $display_value, $meta, $wc_order_item ) {
$meta_data = $meta->get_data();
if( $meta_data['key'] === 'customer_product_image' ) {
return '<img src="' . $meta_data['value'] . '">';
}
return $display_value;
}
add_filter('woocommerce_order_item_display_meta_key', 'modify_order_item_display_key', 10, 3);
function modify_order_item_display_key( $display_key, $meta, $wc_order_item ) {
$meta_data = $meta->get_data();
if( $meta_data['key'] === 'customer_product_image' ) {
return 'Customer Image';
}
return $display_key;
}
Это помогло мне!
Сначала я добавил этот фрагмент для удаления пользовательского мета-элемента при визуализации деталей заказа:
add_filter( 'woocommerce_hidden_order_itemmeta', 'hide_order_item_meta_fields' );
function hide_order_item_meta_fields( $fields ) {
$fields[] = 'current_view';
$fields[] = 'custom_image';//Add all meta keys to this array,so that it will not be displayed in order meta box
return $fields;
}
во-вторых, я добавил его обратно с этим, и с желаемым тегом текста и изображения:
add_action( 'woocommerce_after_order_itemmeta', 'order_meta_customized_display',10, 3 );
function order_meta_customized_display( $item_id, $item, $product ){
$all_meta_data=get_metadata( 'order_item', $item_id, "", "");
$useless = array(
"_qty","_tax_class","_variation_id","_product_id","_line_subtotal","_line_total","_line_subtotal_tax","_line_tax","_line_tax_data"
);// Add key values that you want to ignore
$customized_array= array();
foreach($all_meta_data as $data_meta_key => $value) {
if(!in_array($data_meta_key,$useless)){
$newKey = ucwords(str_replace('_'," ",$data_meta_key ));//To remove underscrore and capitalize
$customized_array[$newKey]=ucwords(str_replace('_'," ",$value[0])); // Pushing each value to the new array
}
}
if (!empty($customized_array)) {
foreach($customized_array as $data_meta_key => $value){
echo "<div class='product_container'><span>Produkt Billede: </span><img src='".wp_upload_dir()['baseurl'].'/flapper/'. $value ."' /> </div>";
}
}
}
я нашел ответ на этот вопрос на этой странице