当前位置: 首页 > 知识库问答 >
问题:

Wordpress WooCommerce | MySQL技能不足

濮书
2023-03-14

我想做的是创建一个页面,其中存在多个下拉选择菜单。每个菜单将包含一个产品类型(如CPU、主板、显卡等)。)该类别下的所有产品都显示在价格旁边。所以,我要做的是创建一个带有自定义PHP的页面模板来满足最终目标。事情是这样发展的:

  1. 将类别名称设置为变量
  2. 从wplz_terms表中抓取与给定类别名称匹配的任何term_id-将整个返回发送到格式正确的数组。
  3. 解析表wplz_term_relationships中的所有term_id到product_id。
  4. 通过查询wplz_posts并选择每个匹配的产品名称来解决上面返回的product_id列出的所有项目。
  5. 从wplz_postmeta中选择meta_value,其中post_id与上面返回的product_id匹配,meta_key等于_price-然后将步骤4和5的结果推入一个包含名称和相应价格的数组对于每一个产品返回。

到目前为止,这是我的代码。我花了一些时间试图弄清楚“左加入”(这就是我想我要找的)

/ Return all products in the category "CPU"
$term = 'CPU';

// Resolve Term to Term ID(s)
$query = "
    SELECT
    term_id
    FROM wplz_terms
    WHERE name = $term
";

// Execute the Query
$return = $wpdb->get_results($query, OBJECT);

// Properly Format the Result for an Array
$array = json_decode(json_encode($return),true);

// Flatten Array to Simple Array Function
function array_flatten_recursive($array) { 
   if (!$array) return false;
   $flat = array();
   $RII = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
   foreach ($RII as $value) $flat[] = $value;
   return $flat;
}
$flat = array_flatten_recursive($array);

// Format for Next MySQL Query
$in = implode(',', $flat);

// Resolve Term ID to Object ID(s) 
$query = "
    SELECT
    object_id
    FROM wplz_term_relationships
    WHERE term_taxonomy_id IN ($in)
";

// Execute the Query
$return = $wpdb->get_results($query, OBJECT);

// Properly Format the Result for an Array
$array = json_decode(json_encode($return),true);

// Refresh $flat Value
$flat = array_flatten_recursive($array);

// Format for Next MySQL Query
$in = implode(',', $flat);

// Resolve Products by the resulting Object ID(s)
$query = "
    SELECT
    id,
    post_title
    FROM wplz_posts 
    WHERE id IN ($in)
";

// Execute the Query
$return = $wpdb->get_results($query, OBJECT);

// Properly Format the Result for an Array
$array = json_decode(json_encode($return),true);

共有1个答案

程举
2023-03-14

因此,如果我理解正确,您希望显示按分类术语筛选的帖子列表。这是WordPress内置于WP\u Query

$query = new WP_Query( array(
    'post_type' => 'product',
    'posts_per_page' => -1,
    'tax_query' => array(
        array(
            'taxonomy' => 'product_cat',
            'field' => 'slug',
            'terms' => $term
        )
    )
) );

while ( $query->have_posts() ):
    $query->the_post();
    // Your HTML would go here, or better yet, use a template part:
    get_template_part( 'content', 'product' );
endwhile;

wp_reset_postdata(); // Reloads original query, very important!

如果您想过滤多个术语,只需将$terms替换为术语段塞数组即可。

将结果显示为下拉菜单

假设查询已按上述代码设置,则模板代码如下所示:

<select name="product_choice" id="product_chooser">

<?php
    while ( $query->have_posts() ):
        $query->the_post();
        printf(
            '<option value="%d">%s - %s</option>',
            get_the_ID(),
            get_the_title(),
            get_post_meta( get_the_ID(), '_price', true )
        );
    endwhile;

    wp_reset_postdata();
?>

</select>

当然,您需要修改所选内容的名称和ID,以适应代码的其余部分,但这应该让您开始。

 类似资料:
  • 本文向大家介绍MySQL性能优化技巧分享,包括了MySQL性能优化技巧分享的使用技巧和注意事项,需要的朋友参考一下 MySQL性能优化 在互联网公司MySQL的使用非常广泛,大家经常会有MySQL性能优化方面的需求。整理了一些在MySQL优化方面的实用技巧。 Schema与数据类型优化 整数通常是标识列最好的选择,因为它们很快并且可以使用AUTO_INCREMENT 完全“随机”的字符串(如:MD

  • 问题内容: 下面是我的表结构 我正在执行查询,它向我显示列不能为空,这是我的查询 错误-列’physician_minc’不能为空 不是必填字段。我该如何解决这个问题? 问题答案: 您已将not null值定义为’physician_minc’: 如何将null值传递给它。首先,您需要将列设置为null,然后才可以传递所需的null值。

  • 我正在Windows 2012R2上运行MySQL 5.6.26,在MySQL.ini中,所有内容都配置为使用UTF-8 Unicode(utf8)。 当我执行以下SQL命令时: 数据库返回给我以下数据: 118威尼斯3 5 0 56

  • 我将Alexa技能创建为AWS Lambda节点。js应用程序基于Alexa技能工具包中提供的一个示例。我遵循了所有的指示: My Echo在AWS上注册了与我的开发者账户相同的账户 我在亚马逊开发者控制台上配置了我的技能 我把我的应用程序ID从控制台到我的应用程序代码 我将我的代码上传到AWS Lambda服务(设置为N。弗吉尼亚,按照指示) 我测试了我的服务,它返回了预期的JSON 我输入我的

  • 问题内容: 我创建了一个包含三列Id,Name,Quantity的表。看来,当我尝试插入至少包含一个空列的行或试图将列的默认值设置为NULL时,数据库会引发错误。 #1048-列“数量”不能为空 如何将NULL设置为列的有效值? 问题答案: 用您的实际数据类型替换,但没有限制。 要显示当前的列定义,请运行 在(命令行客户端)

  • 1.1.1. Rokid云端技能协议 1.1.2. 大纲 1.1.3. 1. 简介 1.1.4. 2. Request 1.1.5. 3. Response 1.1.1. Rokid云端技能协议 Rokid 开放平台 版本:1.0.1-alpha 1.1.2. 大纲 简介 一些概念 Request 协议概览 Session 定义 Context 定义 Request 定义 Response 协议概