Php Woocommerce管理订单详细信息-在订单详细信息页面上显示自定义数据
我正在搜索和尝试它2天没有成功,请帮助 我想筛选woocommerce订单,以便根据产品属性将其他详细信息从db添加到订单详细信息页面,但我找不到适合此任务的woocommerce操作/筛选器挂钩。 这里假设变量Php Woocommerce管理订单详细信息-在订单详细信息页面上显示自定义数据,php,wordpress,content-management-system,woocommerce,Php,Wordpress,Content Management System,Woocommerce,我正在搜索和尝试它2天没有成功,请帮助 我想筛选woocommerce订单,以便根据产品属性将其他详细信息从db添加到订单详细信息页面,但我找不到适合此任务的woocommerce操作/筛选器挂钩。 这里假设变量$is_customized=false 如果$is_customized==true,那么我需要将自定义数据从数据库添加到订单详细信息页面 注意:我不想添加额外的元框,而是想更改订单明细表: 将默认产品映像替换为存储在数据库中的映像 以及 在产品名称下面添加包含自定义属性的div
$is_customized=false
如果$is_customized==true
,那么我需要将自定义数据从数据库添加到订单详细信息页面
注意:我不想添加额外的元框,而是想更改订单明细表:
- 将默认产品映像替换为存储在数据库中的映像 以及
- 在产品名称下面添加包含自定义属性的div
谢谢以下是如何在挂钩上显示一些额外数据的开始:
与任何其他自定义post类型列一样,它们通过和进行处理。至于订单,帖子类型是
shop\u order
。没关系,我只是更仔细地看了你的截图,这不是我想的。也就是说,它是一个代谢箱,所以最坏的情况下你可以将其移除,这意味着没有操作/过滤器可以过滤这些结果或自定义它,而不是重写整个模块?管理\编辑车间\订单\列和管理\车间\订单\发布\自定义\列这两个都会向订单表中添加额外的列,但我想在订单编辑页面中添加列,其中包含订单的详细信息具体的顺序已经列出了。你可以在中看到你可以使用的钩子,非常感谢,这正是我正在寻找的东西。你能告诉我如何替换图像吗?我还需要一个数量过滤器。这意味着如果条件为真,我不想显示数量。我看得越多,我越觉得过滤图像会非常困难,可能需要在图像中添加一些过滤器。一般来说,这很容易做到,但是get\u post\u thumbnail\u id()
函数完全依赖于$post\u id
,目前我无法发送$order\u item
,这是该特定订单中唯一的产品版本。是的,让我解释一下。实际上,这是一种设计工具,每个客户都会设计自己的产品,很明显,每次的产品形象都会有所不同。我已经成功地将自定义数据和图像从会话添加到购物车,然后再添加到订单,但我只是停留在这里。产品图像的名称以db为单位,我可以通过订单id获取,但如何覆盖?这是重点,我理解你的问题。我在几年前创建了一些东西,将WooCommerce与EZprints结合起来,这与您描述的概念相同。我告诉你(据我所知)这目前是不可能的。我对答案进行了编辑,以显示在不修改WooCommerce.FWI的情况下我能做的最好的事情——我向WC建议的过滤器已合并到core中,因此您可以按照预期的方式进行操作,它最终将成为官方代码。
add_action( 'woocommerce_before_order_itemmeta', 'so_32457241_before_order_itemmeta', 10, 3 );
function so_32457241_before_order_itemmeta( $item_id, $item, $_product ){
echo '<p>bacon</p>';
}
add_filter( 'get_post_metadata', 'so_32457241_order_thumbnail', 10, 4 );
function so_32457241_order_thumbnail( $value, $post_id, $meta_key, $single ) {
// We want to pass the actual _thumbnail_id into the filter, so requires recursion
static $is_recursing = false;
// Only filter if we're not recursing and if it is a post thumbnail ID
if ( ! $is_recursing && $meta_key === '_thumbnail_id' ) {
$is_recursing = true; // prevent this conditional when get_post_thumbnail_id() is called
$value = get_post_thumbnail_id( $post_id );
$is_recursing = false;
$value = apply_filters( 'post_thumbnail_id', $value, $post_id ); // yay!
if ( ! $single ) {
$value = array( $value );
}
}
return $value;
}
add_filter( 'post_thumbnail_id', 'so_custom_order_item_thumbnail', 10, 2 );
function so_custom_order_item_thumbnail( $id, $post_id ){
if( is_admin() ){
$screen = get_current_screen();
if( $screen->base == 'post' && $screen->post_type == 'shop_order' ){
// this gets you the shop_order $post object
global $post;
// no really *good* way to check post item, but could possibly save
// some kind of array in the order meta
$id = 68;
}
}
return $id;
}