2016-11-11 3 views
0

Sehr geehrte StackOverflow Freunde, Ich muss eine "Service-Funktion" in Wordpress einfügen - Woocommerce, die Informationen von einer Website zu einem anderen aufruft.Fügen Sie eine Service-Funktion in woocommerce

Sie haben mir ein paar Notizen vom alten Webmaster hinterlassen und ich brauche Hilfe, um das Rätsel zu lösen. Ich habe versucht, die Funktion in ein Tag einzufügen, aber ich weiß nicht, wie ich es richtig in die PHP-Datei integrieren kann. Ich möchte diese Funktion in Tabs.php setzen, das ist eine offizielle und bestehende Woocommerce-Seite (ich überschreibe es mit einem Ordner in meiner Vorlage, kein Problem für diese Passage).

Dies ist die Note, die ich erhielt, das Skript:

$(document).ready(function() { 
var nf = $('.content_nutritional_facts'); 
if (nf.length) { 
    var id = nf.attr('id'); 
    var url ="http://www.ourwebsite.it/__SCRIPT__NutritionalFactsService.php?   
sku="+id; 

    $.ajax({ 
     type: "GET", 
     dataType: "jsonp", 
     url: url, 
     success: function (data) { 
      nf.html(data); 
     } 
    }); 
    } 
}); 

die Datei, die ich in den Code setzen wollen, ist tabs.php (WooCommerce) und sein Inhalt ist

<?php 
if (! defined('ABSPATH')) { 
exit; 
} 

$tabs = apply_filters('woocommerce_product_tabs', array()); 

if (! empty($tabs)) : ?> 

<div class="woocommerce-tabs wc-tabs-wrapper"> 

<!--start TRIED TO PUT HERE THE SCRIPT--> 
<script> 
jQuery(document).ready(function() { 
var nf = jQuery('.content_nutritional_facts'); 
if (nf.length) { 
    var id = nf.attr('id'); 
    var url = "http://www.mywebsite.it/dropshipping/__SCRIPT__NutritionalFactsService.php?sku="+id; 

    jQuery.ajax({ 
     type: "GET", 
     dataType: "jsonp", 
     url: url, 
     success: function (data) { 
      nf.html(data); 
     } 
    }); 
    } 
});</script> 
<!--end TRIED TO PUT HERE THE SCRIPT--> 

<!--start TRIED TO PUT HERE THE html div--> 
<div class="content_nutritional_facts" id="<?php echo ($sku = $product- >get_sku()) ? $sku : __('N/A', 'woocommerce'); ?>"> something should appear  </div> 
<!--end TRIED TO PUT HERE THE html div--> 

    <ul class="tabs wc-tabs"> 
     <?php foreach ($tabs as $key => $tab) : ?> 
      <li class="<?php echo esc_attr($key); ?>_tab"> 
       <a href="#tab-<?php echo esc_attr($key); ?>"><?php echo  apply_filters('woocommerce_product_' . $key . '_tab_title', esc_html( $tab['title']), $key); ?></a> 
      </li> 
     <?php endforeach; ?> 
    </ul> 
    <?php foreach ($tabs as $key => $tab) : ?> 
     <div class="woocommerce-Tabs-panel woocommerce-Tabs-panel--<?php echo esc_attr($key); ?> panel entry-content wc-tab" id="tab-<?php echo esc_attr($key); ?>"> 
      <?php call_user_func($tab['callback'], $key, $tab); ?> 
     </div> 
    <?php endforeach; ?> 
    </div> 

<?php endif; ?> 

Dies ist die original tabs.php

Danke für Ihren Vorschlag und Ihre Zeit!

+0

ich nicht klar bin, was Sie erreichen wollen. Müssen Sie eine neue Registerkarte erstellen, und diese Registerkarte sollte Daten dynamisch von einer anderen Site abrufen? Und ich bin mir nicht sicher, ob es möglich ist, Ajax mit einer domänenübergreifenden URL zu verwenden, also würde ich wahrscheinlich raten, [wp_remote_get() '] zu suchen (https://codex.wordpress.org/Function_API/wp_remote_get) – helgatheviking

+0

Danke du @helgatheviking Ich schaue dir deinen Link an ... ja, ich möchte einen neuen Tab erstellen, aber was ich versuche zu erreichen, und ich bin nicht dazu in der Lage, etwas aus dieser Funktion erscheinen zu lassen (Nr Sorgen Sie sich jetzt für Erscheinungen, nur um zu überprüfen, dass das Skript funktioniert und zeigen Sie Text von der ersten Website). Vielen Dank, ich werde es dich wissen lassen! – Elena

Antwort

0

Hier ist, wie eine neue Registerkarte erstellen und verwenden wp_remote_get() einige Remote-Content zu greifen:

// Adds the new tab 
add_filter('woocommerce_product_tabs', 'woo_nutritional_info_product_tab'); 
function woo_nutritional_info_product_tab($tabs) { 
    $tabs['desc_tab'] = array(
     'title'  => __('Nutritional Information', 'your-plugin'), 
     'priority' => 50, 
     'callback' => 'woo_nutritional_info_product_tab_content' 
    ); 
    return $tabs; 
} 

// The new tab content 
function woo_nutritional_info_product_tab_content() { 

    $product_id = get_the_ID(); 
    $url = "http://www.website.it/dropshipping/__SCRIPT__NutritionalFactsService.php?sku=" . $product_id; 

    // I'd suggest using the Transient API https://codex.wordpress.org/Transients_API to store the response 
    $response = wp_remote_get($url); 

    if (is_array($response) && ! is_wp_error($response)) { 
     $headers = $response['headers']; // array of http header lines 
     $body = $response['body']; // use the content 

     // do something with the response 
     var_dump($body); 
    } 
} 
Verwandte Themen