Я новичок в коде WordPress и WooCommerce. Мне предоставили рабочий код, который находится в плагинах / 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' );
}

Вы можете попробовать подключить его к woocommerce_before_main_content
Вот так:
function fetch_shop_data() {
// your code
}
add_action('woocommerce_before_main_content', 'fetch_shop_data');