如何将现有代码转换为WooCommerce插件

时间:2018-08-03 09:23:10

标签: wordpress

我对WordPress和WooCommerce代码非常陌生。已经为我提供了一些工作代码,这些代码驻留在plugins / woocommerce / templates / archive-product.php

该函数非常简单,它只是从远程站点获取一系列数据,并利用返回的JSON查找匹配的SKU,并将其作为产品列表中的项目注入。

但是效果很好,因为我是Woo&WP的新手,所以我希望有人能够向我展示如何将这段代码转换为定义为插件的正确方式?

我希望只是在函数周围包装一些其他代码的情况,但我不确定从哪里开始

非常感谢任何提示

if ( wc_get_loop_prop( 'total' ) ) {

    $actual_link = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

    $cat = explode('/', $actual_link);

    if ($cat[4] == 'my-product-list') {

        global $current_user;
        get_currentuserinfo();

        $data = array( 'email' =>  $current_user->user_email);
        $response = wp_remote_post( 'https://www.shop.com/remote-data/', array( 'data' => $data ) );

        $curl = 'https://www.shop.com/remote-data/';

        $response = wp_remote_get( $curl );
        $rows = wp_remote_retrieve_body( $response ) ;
        $decode = json_decode(stripslashes($rows), true);

        global $wpdb;

        $product_id = array();

        $i = 0;
        foreach ($decode as $single_data) {
            foreach ($single_data['items'] as $data) {
                $result = $wpdb->get_results ( "SELECT post_id FROM wp_postmeta WHERE meta_key = '_sku' AND meta_value = '".$data."'" );
                $product_id[$i] = $result[0]->post_id;
                $i++;
            }
        }

        $product_id = array_filter(array_unique($product_id));
        $args = array(
        'post_type' => 'product',
        'post__in' => $product_id
        );

        //The Query
        $the_query = new WP_Query( $args );

        while ( $the_query->have_posts() ) {
            $the_query->the_post();

            do_action( 'woocommerce_shop_loop' );

            wc_get_template_part( 'content', 'product' );
        }

1 个答案:

答案 0 :(得分:0)

您可以尝试将其挂接到woocommerce_before_main_content

像这样:

function fetch_shop_data() {
   // your code
}
add_action('woocommerce_before_main_content', 'fetch_shop_data');