워드프레스에서 비교할 추가를 만드는 방법?
플러그인을 사용하고 싶지 않습니다.쿠키를 이용해 비교 페이지를 만들어 보았지만 여전히 문제가 생겼습니다.워드프레스로 제품 비교를 만드는 방법을 알려주실 분 계신가요?
루프를 사용하면 "비교할 추가"를 추가한 다음 출력이 나타납니다. 링크 또는 버튼
<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>
제 논리는 명확하지 않습니다.제품 페이지를 비교하기 위해 추가를 구축하려면 어떻게 해야 하는지 모르겠습니다.하지만 제품 비교 페이지를 만들기 위해 다음과 같은 단계를 시도했습니다.
두 가지 사용자 지정 게시물 유형을 만들었습니다.
- 주상품
- 하위 상품
주요 제품은 하위 제품의 상위 게시물입니다.이는 서브 프로덕트가 메인 프로덕트의 자식이라는 것을 의미합니다.
주요 제품은 브랜드 게시물이고 서브 제품은 이들 브랜드와 관련된 제품과 상세한 내용을 추가하는 게시물입니다.
저는 BARATA(가정:P)라는 브랜드를 가지고 있으며 제품은 다음과 같습니다.
- 바라타 폰
- 바라타 Ptwo
- 바라타 P3
- 바라타 P4
WIDTH, Length, HIGHT 등 모두 사양이 동일합니다.
주 제품 사용자 지정 템플릿에서 하위 제품에서 하위 게시물을 가져오기 위해 이 루프를 추가했습니다.
<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
}
?>
위 코드는 메인 페이지의 어린이 제품을 가져와 Add와 함께 표에 표시하여 비교합니다.$variid
저는 아동용품의 아이디와 이름을 저장하고 있습니다.$variname
.
Onclick을 사용하여 이 데이터들을 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>
비교 페이지에서 나는 이 제품들의 비교를 보여주기 위해 이 데이터들을 검색할 수 있습니다.하지만 문제도 있다.비교 대상 제품에 대한 제한을 추가하는 방법을 모르는 것처럼.
비교할 제품을 추가할 수 있는 논리를 제시해 주실 수 있나요?다른 사람들은 그것을 실제로 어떻게 합니까?어떻게 하면 되죠?올바른 방향으로 안내 부탁드립니다.
$_SESS를 사용하면 논리를 더 잘 처리할 수 있습니다.항목 추가/제거 기능은 다음과 같습니다(테스트되지 않은 코드).
$_SESSION['barata_products'] = [];
function add_products(varid) {
array_push($_SESSION['barata_products'],varid);
}
function remove_product(varid) {
$product_index = array_search(varid,$_SESSION['barata_products']);
unset($_SESSION['barata_products'][$product_index]);
}
function remove_all_products() {
$_SESSION['barata_products'] = [];
}
//helper function to check if the session array is greater than your desired amount, where x is number of products within the array.
function more_than_x(session,x) {
$_SESSION['barata_products'].count() > x ? true : false
}
워드프레스 세션으로 더 멋진 논리가 필요하다면 이 블로그를 확인해보세요.
ajax를 사용하면 다음과 같이 각 제품에 대한 세션을 만들 수 있습니다.
$(document).ready(function(){
$('.product').click(function(){
var product_id = $(this).attr('id');
$.ajax({
method: 'POST',
url : "YOUR PHP FILE NAME",
data : {product_id:product_id},
success : function(resp){
alert("Product is added to be compared");
}
});
});
});
PHP 파일 코드:
<?php
session_start();
$product_id = $_POST['product_id'];
if(!is_array($_SESSION['ids']))
{
$_SESSION['ids'] = array();
}
else
{
array_push($_SESSION['ids'], $product_id);
}
?>
그럼 그걸 이용하시면 됩니다.$_SESSION
변수를 사용하여 모든 제품 ID를 비교 템플릿으로 가져옵니다.
언급URL : https://stackoverflow.com/questions/34815498/how-to-create-add-to-compare-in-wordpress
'IT' 카테고리의 다른 글
LXD 공유 /var/lib/mysql을 호스트에서 컨테이너로 공유하고 사용자/그룹을 매핑합니다. (0) | 2023.09.15 |
---|---|
오류 ""DataFrame' 개체에 '첨부' 속성이 없습니다." (0) | 2023.09.15 |
Linux 터미널의 클립보드에 파일 내용 복사 (0) | 2023.09.15 |
ORA-02264: 기존 제약 조건에서 이미 사용된 이름 (0) | 2023.09.15 |
NodeJS/express:캐시 및 304 상태 코드 (0) | 2023.09.10 |