IT

워드프레스에서 비교할 추가를 만드는 방법?

itgroup 2023. 9. 15. 20:55
반응형

워드프레스에서 비교할 추가를 만드는 방법?

플러그인을 사용하고 싶지 않습니다.쿠키를 이용해 비교 페이지를 만들어 보았지만 여전히 문제가 생겼습니다.워드프레스로 제품 비교를 만드는 방법을 알려주실 분 계신가요?

루프를 사용하면 "비교할 추가"를 추가한 다음 출력이 나타납니다. 링크 또는 버튼

<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>

제 논리는 명확하지 않습니다.제품 페이지를 비교하기 위해 추가를 구축하려면 어떻게 해야 하는지 모르겠습니다.하지만 제품 비교 페이지를 만들기 위해 다음과 같은 단계를 시도했습니다.


두 가지 사용자 지정 게시물 유형을 만들었습니다.

  1. 주상품
  2. 하위 상품

주요 제품하위 제품의 상위 게시물입니다.는 서브 프로덕트가 메인 프로덕트의 자식이라는 것을 의미합니다.

주요 제품은 브랜드 게시물이고 서브 제품은 이들 브랜드와 관련된 제품과 상세한 내용을 추가하는 게시물입니다.

저는 BARATA(가정:P)라는 브랜드를 가지고 있으며 제품은 다음과 같습니다.

  1. 바라타 폰
  2. 바라타 Ptwo
  3. 바라타 P3
  4. 바라타 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

반응형