Wie erstelle ich eine Vergleichsliste in WordPress?

Lesezeit: 6 Minuten

Ich möchte kein Plugin verwenden. Ich habe versucht, eine Vergleichsseite mithilfe von Cookies zu erstellen, habe aber immer noch Probleme. Kann mir bitte jemand sagen, wie ich Vergleichsprodukte in WordPress erstellen kann?

Mit Loop bekomme ich folgende Ausgabe, wo ich hinzugefügt habe “Hinzufügen zum vergleichen“Link oder Schaltfläche

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

Meine Logik ist nicht klar. Ich weiß nicht, was ich tun soll, um eine Seite zum Hinzufügen von Produkten zum Vergleichen zu erstellen. Aber ich habe die folgenden Schritte versucht, um eine Produktvergleichsseite zu erstellen:


Ich habe zwei benutzerdefinierte Beitragstypen erstellt:

  1. Hauptprodukt
  2. Unterprodukt

Hauptprodukte sind die Elternbeiträge von Unterprodukte. Das bedeutet Unterprodukte sind das Kind von Hauptprodukte.

Hauptprodukte sind die Beiträge für Marken und Unterprodukte sind die Posts, in denen wir Produkte und deren Details zu diesen Marken hinzufügen.

Ich habe eine Marke namens BARATA (angenommen: P) und ihre Produkte sind:

  1. Barata Pone
  2. Barata Ptwo
  3. Barata Pdrei
  4. Barata Pfour

Sie haben alle die gleiche Spezifikation wie BREITE, LÄNGE, HÖHE.

Im Hauptprodukt benutzerdefinierte Vorlage, die ich hinzugefügt habe diese Schleife um seine untergeordneten Posts zu erhalten Unterprodukte

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

?>

Der obige Code ruft untergeordnete Produkte der Hauptseite ab und zeigt sie in der Tabelle mit der Schaltfläche Zum Vergleich hinzufügen an. in $variid Ich speichere die ID der untergeordneten Produkte und deren Namen $variname.

Mit Onclick sende ich diese Daten an die Javascript-Funktion, um Cookies zu erstellen.

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>

Auf der Vergleichsseite kann ich diese Daten abrufen, um einen Vergleich dieser Produkte anzuzeigen. aber es gibt einige Probleme. Ich weiß nicht, wie ich ein Limit für zu vergleichende Produkte hinzufügen soll.

Können Sie mir eine Logik geben, um Produkte zum Vergleichen hinzuzufügen? Wie machen es andere eigentlich? Wie kann ich es tun? Bitte führen Sie mich in die richtige Richtung.

  • Können Sie erklären, was Sie mit “Ich weiß nicht, wie ich Grenzwerte für zu vergleichende Produkte hinzufügen soll” meinen? Meinen Sie, dass ein Benutzer darauf beschränkt sein sollte, wie viele Artikel gleichzeitig verglichen werden können?

    – Shawn

    19. Januar 2016 um 17:20 Uhr

  • Das Wichtigste zuerst, damit Produkte unter eine Marke fallen, sollte die Marke kein Beitrag sein und die Produkte sollten keine untergeordneten Beiträge sein, stattdessen sollten die Produkte Beiträge vom Typ Produkt sein (benutzen Sie WooCommerce, um dabei zu helfen) und die Marken sollten “Kategorien” sein, das ist die “WordPress”-Art, solche Dinge zu tun.

    – Mahmud Tantawy

    20. Januar 2016 um 21:32 Uhr

  • Zweitens haben Sie erwähnt, dass Sie nicht die ganze Logik im Kopf haben, also schlage ich vor, dass Sie aktuelle WooCommerce-Plugins überprüfen, und auch die Vergleichsfunktion in Magento, Sie können all das leicht finden, indem Sie herumgoogeln.

    – Mahmud Tantawy

    20. Januar 2016 um 21:35 Uhr

  • IDK, vielleicht sollte es für diese Art von Frage eine Art nukleare Strafe geben, und jeder, der sie positiv bewertet, sollte auch dafür Reputation verlieren! Ich habe gerade 3 Minuten meines Lebens mit diesem Bewusstseinsstrom verschwendet. Dies ist keine Frage, und die Leute, die sogar versucht haben, höflich zu antworten, bringen mich zum Weinen über den schieren nutzlosen Wert des menschlichen Lebens. Wie Byron am Parthenon war ich hier……

    – Jim Maguire

    24. Januar 2016 um 4:36 Uhr

  • @Jim Maguire, wer auch immer dafür gestimmt hat, hat die Frage nur überflogen. Auf den ersten Blick sieht es aus, als hätte man sich viel Mühe gegeben. Doch darin steckt der Wahnsinn.

    – James Jones

    24. Januar 2016 um 9:50 Uhr

Sie könnten Ihre $_SESSION verwenden, was eine sauberere Art der Handhabung der Logik sein könnte. Funktionen zum Hinzufügen / Entfernen von Elementen wären die folgenden (ungetesteter Code):

$_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
}

Wenn Sie eine ausgefallenere Logik mit WordPress-Sitzungen benötigen, schauen Sie sich das an dieses Blog

Benutzer-Avatar
ngolwalkar

Sie können einfach Ajax verwenden, um eine Sitzung für jedes Produkt zu erstellen, wie zum Beispiel:

$(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-DATEICODE:

 <?php 
  session_start();
  $product_id = $_POST['product_id'];
  if(!is_array($_SESSION['ids']))
  {
   $_SESSION['ids'] = array();
  }
  else
  {
    array_push($_SESSION['ids'], $product_id);
  }
 ?>

Dann kannst du das verwenden $_SESSION Variable, um alle Produkt-IDs zu Ihrer Vergleichsvorlage zu erhalten.

1370100cookie-checkWie erstelle ich eine Vergleichsliste in WordPress?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy