久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

在最近的訂單模板和管理訂單(woocommerce)上顯示產

Display product post type advanced custom field on recent orders template and admin orders (woocommerce)(在最近的訂單模板和管理訂單(woocommerce)上顯示產品帖子類型高級自定義字段) - IT屋-程序員軟件開發技術分
本文介紹了在最近的訂單模板和管理訂單(woocommerce)上顯示產品帖子類型高級自定義字段的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

限時送ChatGPT賬號..

我正在嘗試顯示我在 WooCommerce 最近的訂單模板中創建的字段,但我對 PHP 不是很了解.

I’m trying to display the fields I have created in the recent order template of WooCommerce and I’m not very knowledgeable in PHP.

我創建了一個名為 session 的字段并注冊為產品帖子類型.用戶購買產品后,我希望在我的帳戶">最近的訂單"(模板)中顯示海關字段 會話" 值.

I have created a field called sessions and registered as a product post type. Once a user purchase a product I want thats customs fields "sessions" values to be displayed in the My account > Recent orders (template).

我試圖尋找答案和解決方案,但似乎卡住了.

I tried looking for answers and solutions and I seem to be stuck.

這里是我一直在做的 my-order.php 模板的自定義代碼.我已經對其進行了數天的黑客攻擊,但似乎無法在我最近的訂單表中顯示此值.

Here is the customized code of my-order.php template that I have been working on. I have been hacking it for days and can't seem to display this values in my recent orders table.

更新 - 添加圖像和更多描述以澄清我的問題

1.) 正如您在此處看到的,我創建了兩種類型的字段并將它們注冊為產品帖子類型

1.) As you can see here I created two types of fields and registered them as product post type

2.) 然后我在我創建的這兩個字段上放置了一個值

2.) Then I placed a value on those two fields I have created

3.) 一旦用戶或客戶購買了物品/產品/包裹.我希望這兩個值顯示在用戶 my-account 模板的最近訂單中 "Sessions"

3.) Once a user or customer purchase the item/product/package. I want those two values to be shown on the recent orders of the user my-account template under the column "Sessions"

if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

$my_orders_columns = apply_filters( 'woocommerce_my_account_my_orders_columns', array(
    'order-number'   => __( 'Package', 'woocommerce' ),
    'sessions'       => __( 'Session', 'woocommerce' ),
    'order-total'    => __( 'Package Prize', 'woocommerce' ),
    'order-date'     => __( 'Date', 'woocommerce' ),
    'order-end-date' => __( 'End Date', 'woocommerce'),
    'order-status'   => __( 'Status', 'woocommerce' ),
    'order-actions'  => ' ',
) );

$customer_orders = get_posts( apply_filters( 'woocommerce_my_account_my_orders_query', array(
    'numberposts' => $order_count,
    'meta_key'    => '_customer_user',
    'meta_value'  => get_current_user_id(),
    'post_type'   => wc_get_order_types( 'view-orders' ),
    'post_status' => array_keys( wc_get_order_statuses() )
) ) );

if ( $customer_orders ) : ?>

    <h2><?php // echo apply_filters( 'woocommerce_my_account_my_orders_title', __( 'Recent Orders', 'woocommerce' ) ); ?></h2>

    <table class="shop_table shop_table_responsive my_account_orders">

        <thead>
            <tr>
                <?php foreach ( $my_orders_columns as $column_id => $column_name ) : ?>
                    <th class="<?php echo esc_attr( $column_id ); ?>"><span class="nobr"><?php echo esc_html( $column_name ); ?></span></th>
                <?php endforeach; ?>
            </tr>
        </thead>

        <tbody>
            <?php foreach ( $customer_orders as $customer_order ) :
                $order      = wc_get_order( $customer_order );
                $item_count = $order->get_item_count();
                ?>
                <tr class="order">
                    <?php foreach ( $my_orders_columns as $column_id => $column_name ) : ?>
                        <td class="<?php echo esc_attr( $column_id ); ?>" data-title="<?php echo esc_attr( $column_name ); ?>">
                            <?php if ( has_action( 'woocommerce_my_account_my_orders_column_' . $column_id ) ) : ?>
                                <?php do_action( 'woocommerce_my_account_my_orders_column_' . $column_id, $order ); ?>

                            <?php elseif ( 'order-number' === $column_id ) : ?>
                                <?php foreach($order->get_items() as $item) {
                                    $product_name = $item['name'];

                                } ?>

                                <?php echo $product_name;?>

                            <?php elseif ( 'session'  === $column_id ) : ?>
                                <?php if (get_field('session_period', $product->id) ) :  ?>



                            <?php endif; ?>


                            <?php elseif ( 'order-total' === $column_id ) : ?>
                                <?php echo sprintf( _n( '%s', '%s', $item_count, 'woocommerce' ), $order->get_formatted_order_total(), $item_count ); ?>

                            <?php elseif ( 'order-date' === $column_id ) : ?>
                                <time datetime="<?php echo date( 'Y-m-d', strtotime( $order->order_date ) ); ?>" title="<?php echo esc_attr( strtotime( $order->order_date ) ); ?>"><?php echo date_i18n( get_option( 'date_format' ), strtotime( $order->order_date ) ); ?></time>

                            <?php /* Order End Date */ ?>
                            <?php elseif ( 'order-end-date' === $column_id ) : ?>
                                <?php if (get_field('date_ended', $order->id) ) :    ?>
                                <p class="sendungsnummer"><?php the_field('date_ended', $order->id); ?>

                            <?php endif; ?>

                            <?php elseif ( 'order-status' === $column_id ) : ?>
                                <?php echo wc_get_order_status_name( $order->get_status() ); ?>


                            <?php elseif ( 'order-actions' === $column_id ) : ?>
                                <?php
                                    $actions = array(
                                        'pay'    => array(
                                            'url'  => $order->get_checkout_payment_url(),
                                            'name' => __( 'Pay', 'woocommerce' )
                                        ),
                                        'view'   => array(
                                            'url'  => $order->get_view_order_url(),
                                            'name' => __( 'View', 'woocommerce' )
                                        ),
                                        'cancel' => array(
                                            'url'  => $order->get_cancel_order_url( wc_get_page_permalink( 'myaccount' ) ),
                                            'name' => __( 'Cancel', 'woocommerce' )
                                        )
                                    );

                                    if ( ! $order->needs_payment() ) {
                                        unset( $actions['pay'] );
                                    }

                                    if ( ! in_array( $order->get_status(), apply_filters( 'woocommerce_valid_order_statuses_for_cancel', array( 'pending', 'failed' ), $order ) ) ) {
                                        unset( $actions['cancel'] );
                                    }

                                    /* -------- View Button --------
                                    if ( $actions = apply_filters( 'woocommerce_my_account_my_orders_actions', $actions, $order ) ) {
                                        foreach ( $actions as $key => $action ) {
                                            echo '<a href="' . esc_url( $action['url'] ) . '" class="button ' . sanitize_html_class( $key ) . '">' . esc_html( $action['name'] ) . '</a>';
                                        }
                                    }
                                    */
                                ?>
                            <?php endif; ?>
                        </td>
                    <?php endforeach; ?>
                </tr>
            <?php endforeach; ?>
        </tbody>
    </table>
<?php endif; ?>

推薦答案

這里我們采用了一種與使用 ACF 插件制作的自定義字段不同的方法.我們創建了一個專用的元框,里面有 2 個字段,位于后端產品頁面的右側列,使用以下代碼:

Here we are going on a different approach than custom fields made with ACF plugin. We create a dedicated metabox with 2 fields inside it, located on the right side column in backend product pages, with this code:

//
//Adding Meta container admin product pages
//
add_action( 'add_meta_boxes', 'cc_add_meta_boxes' );
if ( ! function_exists( 'cc_add_meta_boxes' ) )
{
    function cc_add_meta_boxes()
    {
        global $woocommerce, $post;

        add_meta_box( 'cc_other_fields', __('Sessions','woocommerce'), 'cc_add_other_fields_for_packaging', 'product', 'side', 'core' );
    }
}

//
//adding Meta field in the meta container admin product pages
//
if ( ! function_exists( 'cc_save_wc_order_other_fields' ) )
{
    function cc_add_other_fields_for_packaging()
    {
        global $woocommerce, $product, $post;

        $meta_field_session_period = get_post_meta( $post->ID, '_session_period', true ) ? get_post_meta( $post->ID, '_session_period', true ) : '';

        $meta_field_number_sessions = get_post_meta( $post->ID, '_number_sessions', true ) ? get_post_meta( $post->ID, '_number_sessions', true ) : '';

        echo '<input type="hidden" name="cc_other_meta_field_nonce" value="' . wp_create_nonce() . '">
    <p><label style="display:inline-block;" class="cc_opt_label">' .   __( "Session period", "your_theme_slug" ) . '</label><br>
        <input type="text" style="width:250px;";" name="session_period" placeholder="' . $meta_field_session_period . '" value="' . $meta_field_session_period . '"></p>
    <p><label style="display:inline-block;" class="cc_opt_label">' .   __( "Number of sessions", "your_theme_slug" ) . '</label><br>
        <input type="text" style="width:250px;";" name="number_sessions" placeholder="' . $meta_field_number_sessions . '" value="' . $meta_field_number_sessions . '"><br></p>';

    }
}

//Save the data of the product Meta fields pages
add_action( 'save_post', 'cc_save_product_other_fields', 10, 1 );
if ( ! function_exists( 'cc_save_product_other_fields' ) )
{

    function cc_save_product_other_fields( $post_id ) {

        // We need to verify this with the proper authorization (security stuff).

        // Check if our nonce is set.
        if ( ! isset( $_POST[ 'cc_other_meta_field_nonce' ] ) ) {
            return $post_id;
        }
        $nonce = $_REQUEST[ 'cc_other_meta_field_nonce' ];

        //Verify that the nonce is valid.
        if ( ! wp_verify_nonce( $nonce ) ) {
            return $post_id;
        }

        // If this is an autosave, our form has not been submitted, so we don't want to do anything.
        if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
            return $post_id;
        }

        // Check the user's permissions.
        if ( 'page' == $_POST[ 'post_type' ] ) {

            if ( ! current_user_can( 'edit_page', $post_id ) ) {
                return $post_id;
            }
        } else {

            if ( ! current_user_can( 'edit_post', $post_id ) ) {
                return $post_id;
            }
        }
        // --- Its safe for us to save the data ! --- //

        // Sanitize user input  and update the meta field in the database.
        update_post_meta( $post_id, '_session_period', $_POST[ 'session_period' ] );
        update_post_meta( $post_id, '_number_sessions', $_POST[ 'number_sessions' ] );
    }
}

注意:您將此代碼粘貼到活動子主題或主題的function.php文件中.

Note: you will paste this code in the function.php file of active child theme or theme.

如何在模板代碼中使用它 + 更正的錯誤:

對于那些簡單的字段,您不需要使用 ACF 插件.您還會發現缺少的代碼來檢索訂單 ID、產品 ID 并顯示在我的帳戶 > 最近的訂單表、會話數據:

You will not need to use ACF plugin for those simple fields. You will find also the missing code to retrieve order ID, Product ID and to display on My account > recent orders table, the sessions data:

// This is your existing code:
<?php 

<?php foreach ( $customer_orders as $customer_order ) :
                $order      = wc_get_order( $customer_order );

                // This way you can retrieve order ID:
                $order_id   = $order->post->ID;

您需要的:

if (get_field('date_ended', $order_id) ) : 
// or
if (get_field('date_ended', $order->post->id) ) :
// instead of: 
//get_field('date_ended', $order->id)

// and use </p> instead of <p> at the end of this line:
<p class="sendungsnummer"><?php the_field('date_ended', $order->id); ?></p>

.../...

foreach($order->get_items() as $item) {
$product_name = $item['name'];

// This way you can retrieve product ID:
$product_id = $item['product_id'];

.../...

您將使用產品 ID(或帖子 ID)和模板中的 Wordpress 函數get_post_meta() 訪問此數據:

You will access this data with product ID (or post ID) and the Wordpress function get_post_meta() in your template:

// Then you get your data fields with this two:
$session_period = get_post_meta( $product_id, '_session_period', true );
$number_sessions = get_post_meta( $product_id, '_number_sessions', true ); 

您將使用它們,以這種方式顯示它們的值:

And you will use them, displaying their values this way:

echo $session_period; // For Session period
echo $number_sessions; // For Number of sessions

.../...

elseif ( 'sessions'  === $column_id ) // <=== It is 'sessions' instead of 'session' !!!

這種方法更專業、更干凈:

This approach is more professional and cleaner:

這是基于不同的問題,但有些類似:
WooCommerce:將自定義 Metabox 添加到管理訂單頁面

This is based on a different problem but some kind of similar:
WooCommerce : Add custom Metabox to admin order page

這篇關于在最近的訂單模板和管理訂單(woocommerce)上顯示產品帖子類型高級自定義字段的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Add programmatically a downloadable file to Woocommerce products(以編程方式將可下載文件添加到 Woocommerce 產品)
Get today#39;s total orders count for each product in Woocommerce(獲取今天 Woocommerce 中每種產品的總訂單數)
Add Custom registration fields in WooCommerce and phone field validation issue(在 WooCommerce 和電話字段驗證問題中添加自定義注冊字段)
Add a select field that will change price in Woocommerce simple products(在 Woocommerce 簡單產品中添加一個將更改價格的選擇字段)
Add custom columns to admin products list in WooCommerce 3(在 WooCommerce 3 中將自定義列添加到管理產品列表)
Customizing checkout quot;Place Orderquot; button output html(自定義結帳“下訂單按鈕輸出html)
主站蜘蛛池模板: 97伦理电影| 久久国产区| 在线国产一区 | 日韩午夜 | 国产精品久久久久久av公交车 | 亚洲欧美视频 | 在线看片网站 | 欧美日韩综合视频 | 91美女在线观看 | 欧美综合一区二区 | 国产主播第一页 | 欧产日产国产精品视频 | 久久久久久av | jizjizjiz中国护士18 | 亚洲欧美视频 | 久久高潮 | 欧美一级艳情片免费观看 | 日本午夜在线视频 | 影音先锋中文在线 | 成人精品鲁一区一区二区 | 亚洲成人av一区二区 | 一区二区三区在线免费观看 | 婷婷丁香综合网 | 久久久久久久久久一区 | 超碰97av| 国产视频导航 | 欧美精品一区二区三区在线 | 久久精品视频网站 | 久久久亚洲精品视频 | 女女爱爱视频 | 久久伊人精品一区二区三区 | 欧美日韩久久精品 | 免费人成在线观看网站 | www.色综合 | 亚洲一区二区三区四区五区午夜 | 伊人久久一区二区 | 亚洲天堂久久新 | 色欧美综合 | 综合久久久久久久 | 久久国产精品久久久久久 | 无码一区二区三区视频 |