【问题标题】:How to get the product Id from a meta key and a meta value in WooCommerce如何从 WooCommerce 中的元键和元值获取产品 ID
【发布时间】:2021-05-10 00:46:06
【问题描述】:

我是编码新手。但我这样做并得到了预期的一系列值。太棒了!

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

如果我有 meta_value(当然还有 key)并且想要 post_ids 作为一个数组呢?

谢谢

【问题讨论】:

    标签: php wordpress woocommerce metadata product


    【解决方案1】:

    您无法从定义的元键和元值中获取帖子 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 都需要替换为正确的所需元密钥。

    【讨论】:

      【解决方案2】:

      谢谢。钥匙是独一无二的,是的。但我在挣扎。我不能确定我在这里得到了任何价值。一条记录将其作为元值: 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 以避免运行时出错。

      【讨论】:

        猜你喜欢
        • 2023-04-07
        • 2016-03-09
        • 1970-01-01
        • 1970-01-01
        • 2015-05-27
        • 1970-01-01
        • 2017-02-21
        • 2021-04-14
        • 2016-05-11
        相关资源
        最近更新 更多