首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wordpress - Woocommerce插件开发

Wordpress - Woocommerce插件开发
EN

Stack Overflow用户
提问于 2017-06-30 04:27:42
回答 1查看 149关注 0票数 1

实际上,我正在为一个客户开发一个ERP,我对wordpress的开发还是个新手。我将所有的信息分离在不同的类中,以添加新的选项卡和面板来选择产品类型,现在我尝试将这些信息添加到元数据数据库中,我想序列化我要添加的产品的信息,然后序列化产品的信息和我创建的选项卡的信息。

下面是我的代码:

代码语言:javascript
复制
<?php

/**
 * Created by PhpStorm.
 * User: Rockerz
 * Date: 15/06/17
 * Time: 21:18
 */
class WC_Product_Rental_Schedule_Tab_view {

public static function Inithook_schedule(){
    add_action( 'woocommerce_product_data_panels', 
['WC_Product_Rental_Schedule_Tab_view','Render_Schedule'] );
}

/**
 * XXX Rename it Render_Product_Tab_Form
 * Custom Tab Panels informations
 */
public static function Render_Schedule(){

        global $post;
        ?><div id='product_dyu' class='panel woocommerce_options_panel'>
        <div class='options_group'>
            <?php
            woocommerce_wp_text_input(
                array(
                    'id'            => 'date_in',
                    'label'         => __( 'Date in', 'woocommerce' ),
                    'desc_tip'      => 'true',
                    'description'   => __( 'Date in', 'woocommerce' ),
                    'type'          => 'date',
                )
            );
            woocommerce_wp_text_input(
                array(
                    'id'            => 'date_out',
                    'label'         => __( 'Date out', 'woocommerce' ),
                    'desc_tip'      => 'true',
                    'description'   => __( 'Date out', 'woocommerce' ),
                    'type'          => 'date',
                )
            );
            woocommerce_wp_select( array(
                    'id' => 'status',
                    'name' => 'status[]',
                    'class' => 'status',
                    'label' => __('Status', 'woocommerce'),
                    'options' => array(
                        '1' => 'Pending',
                        '2' => 'In-Stock',
                        '3' => 'Rent',
                        '4' => 'deprecated',
                        '5' => 'Sold',
                    ))
            );
            $users = get_users(array('fields'=>array('ID', 'user_nicename')));
            $selectUser = array(
                'id' => 'users',
                'name' => 'users[]',
                'class' => 'users',
                'label' => __('Users', 'woocommerce'),
            );

            foreach($users as $user){
                $selectUser['options'][$user->ID] = $user->user_nicename;
            }
            woocommerce_wp_select($selectUser);


            ?>
        </div>
        </div>
        <?php
    }
}

这是我想要添加到数据库中的面板信息。我不知道如何将这些信息添加到元数据库中,我只知道在将其添加到数据库中之前,我必须序列化所有这些信息。

EN

回答 1

Stack Overflow用户

发布于 2017-06-30 05:46:35

您可能不需要自己序列化任何东西。WordPress通过其API对此进行了抽象。调查一下update_post_meta()。用于将元数据添加到帖子(woocommerce产品是一种自定义的帖子类型)。

那么你什么时候使用它呢?

您可以将其挂接到保存产品时触发的woocommerce_process_product_meta挂钩。我不确定您为什么要在init中使用静态函数,但我将假定您知道。也就是说,添加钩子。

然后,您可以使用所挂接的函数来检查$_POST变量,以获取输入的ids。它看起来像这样:

代码语言:javascript
复制
//This goes in you init or constructor
add_action( 'woocommerce_process_product_meta', array( __CLASS__, 'save_fields' ), 1, 2 );

//This processes and saves data in post_meta
function save_fields( $post_id, $product ) {
        $status = $_POST['status'];
    if ( ! empty( $status ) ) {
        update_post_meta( $post_id, '{META_KEY_NAME}', esc_attr( $status ) );
    }

}

额外提示:

除了我的回答,我还看到你在使用PhpStorm。在学习Woocommerce时,我使用的最有价值的工具之一是PhpStorm的“转到定义”功能。官方文档是从DocBlocks自动生成的,还有很多需要改进的地方。我发现通读和跳过代码是非常有价值的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44834423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档