【发布时间】:2021-05-10 00:46:06
【问题描述】:
我是编码新手。但我这样做并得到了预期的一系列值。太棒了!
$thearray= get_post_meta( $product, $metakey, true );
如果我有 meta_value(当然还有 key)并且想要 post_ids 作为一个数组呢?
谢谢
【问题讨论】:
标签: php wordpress woocommerce metadata product
我是编码新手。但我这样做并得到了预期的一系列值。太棒了!
$thearray= get_post_meta( $product, $metakey, true );
如果我有 meta_value(当然还有 key)并且想要 post_ids 作为一个数组呢?
谢谢
【问题讨论】:
标签: php wordpress woocommerce metadata product
您无法从定义的元键和元值中获取帖子 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 对象中获取元数据
对于 WC_product 对象,使用来自已定义元键的 WC_Data 方法 get_meta():
$value = $product->get_meta('some_meta_key');
从帖子 ID(或产品 ID)获取元数据
使用来自已定义元键的产品 ID 的 WordPress get_post_meta() 函数:
$value = get_post_meta( $product_id, 'some_meta_key', true );
在这两种情况下,some_meta_key 都需要替换为正确的所需元密钥。
【讨论】:
谢谢。钥匙是独一无二的,是的。但我在挣扎。我不能确定我在这里得到了任何价值。一条记录将其作为元值: a:3:{i:0;s:9:"斯里兰卡";i:1;s:5:"汤加";i:2;s:19:"特立尼达和多巴哥";}
而不是作为关键。
我使用了您的代码并添加了这样的功能:
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 以避免运行时出错。
【讨论】: