繁体   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