我想做的是创建一个页面,其中存在多个下拉选择菜单。每个菜单将包含一个产品类型(如CPU、主板、显卡等)。)该类别下的所有产品都显示在价格旁边。所以,我要做的是创建一个带有自定义PHP的页面模板来满足最终目标。事情是这样发展的:
到目前为止,这是我的代码。我花了一些时间试图弄清楚“左加入”(这就是我想我要找的)
/ 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);
因此,如果我理解正确,您希望显示按分类术语筛选的帖子列表。这是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 协议概