簡體   English   中英

如何從 WooCommerce 中的元鍵和元值中獲取產品 ID

[英]How to get the product Id from a meta key and a meta value in WooCommerce

我是編碼新手。 但我這樣做並得到了預期的一系列值。 極好的!

$thearray= get_post_meta( $product, $metakey, true );  

如果我有 meta_value(當然還有 key)並且想要 post_ids 作為一個數組呢?

謝謝

您無法從定義的元鍵和元值中獲取帖子 ID ,因為許多帖子 ID 可以具有相同的元鍵和元值。

僅當元鍵的元值唯一時,您才可以使用自定義 SQL 查詢,例如:

function get_post_id_from_meta( $meta_key, $meta_value ) {
    return $wpdb->get_var( $wpdb->prepare("
        SELECT post_id 
        FROM {$wpdb->prefix}postmeta
        WHERE meta_key = '%s' 
        AND meta_value = '%s'", 
    $meta_key, $meta_value ) );
}

它應該可以工作(僅當元鍵的元值是唯一的時)。

示例用法:

$post_id = get_post_id_from_meta( '_color', 'Red' );

WC_product Object 獲取元數據

使用WC_product Object 使用WC_Data方法get_meta()從定義的元鍵:

 $value = $product->get_meta('some_meta_key');

從 Post Id (或產品 Id)獲取元數據

使用 WordPress get_post_meta() function 來自已定義元鍵的產品 ID:

$value = get_post_meta( $product_id, 'some_meta_key', true );

在這兩種情況下some_meta_key都需要用正確的所需元密鑰替換。

謝謝你。 鑰匙是獨一無二的,是的。 但我在掙扎。 我不能確定我在這里得到了任何價值。 一條記錄將此作為元值:a:3:{i:0;s:9:"Sri Lanka";i:1;s:5:"Tonga";i:2;s:19:"Trinidad and Tobago ";}

而notship是關鍵。

我使用了您的代碼並添加了這樣的功能:

add_action( 'woocommerce_before_main_content', 'trying');
function trying(){

$post_id = get_post_id_from_meta( 'notship', 'Tonga' );
    ?><span class="notshipped"><?php echo "Testing ",$post_id?></span><?php
}

卻一無所獲。 我還添加了全局 $wpdb 以避免運行時出現錯誤按摩。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM