come ottenere gli attributi di prodotto dal database di wordpress

Scrivere codice personalizzato per creare la pagina di dettaglio del prodotto con il database di wordpress.

Ho visualizzato il titolo del prodotto, descrizione, prezzo, stock, ecc e si è incastrata con gli attributi del prodotto.
Nel database, _product_attributes è memorizzato in serializzato modo in wp_postmeta tabella nel database. E io non riuscivo a unserailize attributi. Ma ho trovato, ogni valore dell’attributo con un proprio prezzo è stato memorizzato in wp_postmeta in alcuni altri post_id.

per esempio, il prodotto con post_id=55 ha nome dell’attributo ‘valore di Dimensione’ avere valori di 14 e 18 e prezzo 300 e 350, viene visualizzato come valore di attributi e prezzo in post_id=110,111

come ottenere gli attributi di prodotto dal database di wordpress
come ottenere gli attributi di prodotto dal database di wordpress

c’è qualche formula dietro? Qualche idea per trovare questo prodotto valore dell’attributo e il corrispondente valore del prezzo?

ho cercato ma non ho potuto ottenere i valori di attributo da esso, e l’ho usato come $array = unserialize('a:1:{s:13:"pa_size-value";a:6:{s:4:"name";s:13:"pa_size-value";s:5:‌​"value";s:0:"";s:8:"position";s:1:"0";s:10:"is_visible";i:1;s:12:"is_variation";i‌​:1;s:11:"is_taxonomy";i:1;}}'); $var = $array['pa_size-value']; posso estrarre array, ma dopo che??????

OriginaleL’autore Priyanka | 2014-02-26

3 Replies
  1. 3

    Prodotto attributi sono memorizzati in due posizioni – in wp_terms, wp_term_taxonomy e wp_term_relationships (che è il primo luogo – ogni attributo è preceduto da pa_ per la sua tassonomia nome – ad esempio, se si dispone di un attributo di colore, sotto pa_color) quindi anche come PHP array serializzato in wp_postmeta sotto ‘_product_attributes’ meta_key.

    È possibile trovare il metodo per costruire il seriliazed array di attributi qui:

    https://github.com/woothemes/woocommerce/blob/master/includes/class-wc-ajax.php

    Look per la funzione save_attributes() e add_attribute per vedere come serializzato matrice è costruita.

    Direi che “wp_terms” contiene i VALORI di attributo, non l’attributo stesso!

    OriginaleL’autore Dave Hilditch

  2. 3

    Ho preso un po ‘ di un approccio diverso, ho creato una stored procedure nel database che riporta tutti i termini associati con woocommerce prodotto. Ho deciso di andare in questo percorso, perché posso chiamare la procedura dal mio sito in wordpress e l’applicazione desktop che sto creando, senza dover scrivere la funzione in due lingue diverse.

    Anche se mi piacerebbe postare qui per altri usi.

    CREATE DEFINER=`database_name_here`@`%` PROCEDURE `get_product_attributes`(IN ProductName TEXT)
    BEGIN
    SELECT DISTINCT
         p.post_title AS 'Product Name',
         t.name AS 'Term Name',
         tt.taxonomy AS 'Term Type',
         tt.description AS 'Term Description'
    FROM
         wp_posts AS p
    INNER JOIN
         wp_term_relationships AS tr ON p.id = tr.object_id
    INNER JOIN
         wp_term_taxonomy AS tt ON tt.term_taxonomy_id = tr.term_taxonomy_id
    INNER JOIN
         wp_terms AS t ON t.term_id = tt.term_id
    WHERE
         p.post_title= ProductName
    AND
         p.post_type = 'product';
    END

    OriginaleL’autore Fütemire

  3. 0

    $args = array( ‘post_type’ => ‘prodotto’,” );
    $prodotti = get_posts( $args );

         foreach ($products as $product) {
            $data = get_post_meta($product->ID);            
            $pr['regular_price'] = $data['_regular_price']['0'];
            $pr['sale_price'] = $data['_sale_price']['0'];
    Quando si risponde a una domanda, si prega di fornire una spiegazione associato con il tuo codice. Alcune persone potrebbero non capire il tuo codice o non vedi come risponde alla domanda. Vedere come scrivere una buona risposta
    get_post_meta() è la funzione di wordpress, siamo in grado di indirizzare ottenere i dati utilizzando questa funzione, e _regular_price è il campo del database che si trova wp_postmeta tabella in wordpress.

    OriginaleL’autore user8136506

Lascia un commento