2015-09-13 241 views
2

我在爲functions.php中的單個產品頁面中的產品獲取產品SKU時遇到了很多麻煩。我有多個單獨的產品頁面,我希望根據產品顯示不同的文本。我創建了一個兒童主題,我正在使用functions.php文件。我是新來的wordpress和編輯主題,所以我不太理解操作的順序。我能夠使代碼循環工作,併爲我提供所有產品的所有SKU,但這與我所在的實際頁面無關。Woocommerce在functions.php中爲單個產品頁面獲取產品sku

我試過一堆東西。常見的解決方案似乎是:

global $product; 
echo $product->get_sku(); 

但這並不起作用。出於某種原因,$ product變量在functions.php腳本中爲null。

我已遍歷所有產品帖子並獲取帖子ID的循環。我也嘗試獲取當前頁面的ID,但也沒有成功(下面的代碼是從另一個網站複製的)。任何幫助將不勝感激。謝謝。

$full_product_list = array(); 
    $loop = new WP_Query(array('post_type' => array('product', 'product_variation'), 'posts_per_page' => -1)); 

    while ($loop->have_posts()) : $loop->the_post(); 
     $theid = get_the_ID(); 
     $product = new WC_Product($theid); 
+0

你在運行你的代碼時使用了什麼鉤子/模板? – helgatheviking

+0

我創建了一個兒童主題,並且正在編輯functions.php腳本。我對Woocommerce的鉤子沒有問題。我的行爲看起來像這樣:add_action('woocommerce_after_single_product_summary','wc_product_add_text',35); – brad14

回答

0

get_sku()作品就好假設以任何理由你的主題沒有去除woocommerce_after_single_product_summary

add_action('woocommerce_after_single_product_summary', 'so_32545673_add_sku', 35); 
function so_32545673_add_sku(){ 
    global $product; 
    if($product->get_sku()) { 
     echo 'the sku = ' . $product->get_sku(); 
    } 
} 

我沒有看到輸出在第一,因爲它下面的所有相關產品和向上銷售等

此外,你可能想切換到wc_get_product(),而不是試圖直接調用的類。以下列出了產品SKU。您應該使用if($loop->have_posts())打開<ul>,但我很懶。

$loop = new WP_Query(array('post_type' => array('product', 'product_variation'), 'posts_per_page' => -1)); 

while ($loop->have_posts()) : $loop->the_post(); 
    $theid = get_the_ID(); 
    $product = wc_get_product($theid); 

    if($product->get_sku()) echo '<li>' . $product->get_sku() . '</li>'; 
endwhile; 
+0

我刪除了functions.php文件中的內容,並添加到sku函數中,它工作。我不確定我之前在做什麼,但是你的實現與我之前嘗試過的沒有什麼不同。它一定是事物在php文件中的順序。 Anway,我把所有東西都加回來了,現在它正在工作。謝謝! – brad14

+0

也許你在你的功能中有其他的東西搞砸了它。有時你必須回到一個空白文件來整理它。 :) – helgatheviking

相關問題