Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Woocommerce管理订单详细信息-在订单详细信息页面上显示自定义数据_Php_Wordpress_Content Management System_Woocommerce - Fatal编程技术网

Php 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

我正在搜索和尝试它2天没有成功,请帮助

我想筛选woocommerce订单,以便根据产品属性将其他详细信息从db添加到订单详细信息页面,但我找不到适合此任务的woocommerce操作/筛选器挂钩。 这里假设变量
$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;
}