【发布时间】:2016-04-21 07:24:08
【问题描述】:
我不想使用任何插件。我尝试使用 cookie 创建比较页面,但仍然有问题。谁能告诉我如何在 wordpress 中创建比较产品?
使用循环我得到以下输出,其中我添加了“添加到比较”链接或按钮
<table>
<tr>
<td> Product ID</td>
<td>Product Name</td>
<td><a href="#">Add To Compare</a></td>
</tr>
<tr>
<td> 123</td>
<td>P-one</td>
<td><a href="#">Add To Compare</a></td>
</tr>
<tr>
<td>234</td>
<td>P-2</td>
<td><a href="#">Add To Compare</a></td>
</tr>
<tr>
<td>345</td>
<td>P-3</td>
<td><a href="#">Add To Compare</a></td>
</tr>
<tr>
<td>456</td>
<td>P-4</td>
<td><a href="#">Add To Compare</a></td>
</tr>
</table>
我的逻辑不清楚。我不知道我应该怎么做才能构建添加以比较产品页面。但我尝试了以下步骤来创建比较产品页面:
我创建了两种自定义帖子类型:
- 主要产品
- 子产品
主产品是子产品的母帖。这意味着 Sub Products 是 Main Products 的子级。
主要产品是品牌的帖子,子产品是我们添加产品及其与这些品牌相关的详细信息的帖子。
我有一个名为 BARATA 的品牌(假设:P),他们的产品是:
- Barata Pone
- 巴拉塔Ptwo
- Barata Pthree
- Barata Pfour
它们都有相同的规格,如宽度、长度、高度。
在 Main Product 自定义模板中,我添加了 this loop 以从 sub products
获取其子帖子<table>
<thead>
<tr>
<th><h4>Product Name</h4></th>
<th><h4>Any Info</h4></th>
<th><h4>Select to Compare</h4></th>
</tr>
</thead>
<tbody>
<?php
$childargs = array(
'orderby' => 'post_title',
'order' => 'ASC',
);
$compi = 1;
$child_posts = types_child_posts("subproducts",$childargs);
foreach ($child_posts as $child_post) {
$variid = $child_post->ID;
$variname = "compareid".$compi++;
?>
<tr>
<td><?php echo $child_post->post_title; ?></td>
<td><?php echo get_post_meta($child_post->ID, 'any-info-cutomfield', TRUE); ?></td>
<th><a href="" onclick="setting_my_first_cookie('<?php echo $variid; ?>','<?php echo $variname; ?>')">Compare</a>
<a href="" onclick="setting_my_first_cookie_delete('<?php echo $variid; ?>','<?php echo $variname; ?>')">Remove</a>
</th>
</tr>
</tbody>
<?php
// Accessing an individual cookie value
echo $_COOKIE[$variid];
echo $_COOKIE[$variname];
?>
<?php
}
?>
以上代码获取主页的子产品并使用添加到比较按钮将它们显示在表格中。在$variid 中我存储了子产品的ID 和他们的名字$variname。
我使用 Onclick 将这些数据发送到 javascript 函数以创建 cookie。
Javascript:
<script type="text/javascript">
function setting_my_first_cookie(variid,variname) {
var d = new Date();
d.setTime(d.getTime() + (30*24*60*60*1000));
var expires = "expires="+d.toUTCString();
document.cookie = variname + "=" + variid + "; " + "expires; path=/; domain=.domain.com";
}
</script>
<script type="text/javascript">
function setting_my_first_cookie_delete(variid,variname) {
document.cookie = variname + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT; path=/; domain=.domain.com';
}
</script>
在比较页面上,我可以检索这些数据以显示这些产品的比较。但也有一些问题。就像我不知道如何为要比较的产品添加限制一样。
你能给我添加产品进行比较的逻辑吗?其他人实际上是如何做到的?我该怎么做?请指引我正确的方向。
【问题讨论】:
-
您能否阐明“我不知道如何为要比较的产品添加限制”的意思?你的意思是应该限制用户可以同时比较多少个项目?
-
首先,要让产品属于一个品牌,品牌不应该是帖子,产品不应该是子帖子,而是产品应该是产品类型的帖子(使用 WooCommerce帮助),品牌应该是“类别”,这是“WordPress”的做事方式。
-
其次,您提到您的脑海中没有完整的逻辑,所以我建议您检查当前的 WooCommerce 插件,以及 Magento 中的比较功能,您可以通过谷歌搜索轻松找到所有这些周围。
-
IDK,也许这种问题应该受到某种核惩罚,任何支持它的人也应该为此失去代表!我只是在这种意识流上浪费了我生命中的 3 分钟。这不是一个问题,甚至试图礼貌回答的人都让我为人类生命的无用价值而哭泣。就像帕特农神庙的拜伦一样,我在这里......
-
@Jim Maguire 赞成这个问题的人只是略过了这个问题。乍一看,似乎付出了很多努力。但其中隐藏着疯狂。
标签: javascript php wordpress cookies e-commerce