2012-03-26 2 views
0

Ich habe etwas von dem Code weggelassen, um die Anzeige zu erleichtern. Was es tut, ist, dass es die Sammelkartenliste aus einer XML-Datei zieht und sie in eine MySQL-Tabelle auffüllt. Sobald die Tabelle für jede Karte ausgefüllt ist, erstellt sie automatisch einen Post für jede Karte und füllt die Daten auf.MTG MYSQL Tabellenfehler mit add_meta_data funktioniert nicht richtig

Die meisten Daten werden über benutzerdefinierte Felder eingegeben. Alles, was Sie hier sehen, funktioniert perfekt, außer einem Teil im Feld für benutzerdefinierte Felder, das ich nicht ganz verstehe.

Wordpress Codex listet benutzerdefinierte Felder wie folgt aus:

<?php add_post_meta($post_id, $meta_key, $meta_value, $unique); ?> 

Beispiel

<?php add_post_meta(68, '_color', 'red', true); ?> 

Keiner meiner benutzerdefinierten Felder mit Ausnahme einer Arbeit, die ist:

$meta($post_id, 'Condition', 'M/NM', true); 

Wie bei den anderen Benutzerdefinierte Felder, die nicht funktionieren Sie alle enthalten Variablen wie folgt:

$meta($post_id, 'Rating', $rating, true); 

Ich habe mehrere verschiedene Methoden ohne Erfolg ausprobiert. Es gibt viele Beispiele im Netz, in denen Variablen in add_meta_data verwendet wurden. Ich konnte also nicht herausfinden, warum es nicht richtig funktioniert. Das hat mich in den letzten 2 Tagen in den Ruin getrieben. Irgendwelche Ideen?

Plus, wie in der Welt befestigen Sie ein Foto als das vorgestellte Bild für diesen Beitrag?

<?php 
    $z = new xmlreader; 
    $z->open('http://***.com/wp-content/themes/***/mtg/arb.xml'); 
    $doc = new DOMDocument; 

    while ($z->read() && $z->name !== 'card'); 

    echo "<table border=1> 
    <tr> 
     <td><div class='id'>ID</div></td> 

    </tr>"; 

    $prodName = boutique_product_name('offer'); 
    $esc_html_e = esc_html_e('Add to cart','Boutique'); 
    while ($z->name === 'card') 

    { 

     $node = new SimpleXMLElement($z->readOuterXML()); 

     echo "<tr> 
     <td><div class='id1'>".$node->id."</div></td> 

     $name   = $node->name; 
     $rarity   = $node->rarity; 
     $manacost  = $node->manacost; 
     $ability  = $node->ability; 
     $pricing_high  = $node->pricing_high; 


     $mtg_post = array(); 
     $mtg_post['post_title'] = wp_strip_all_tags($name); 
     $mtg_post['post_content'] = wp_strip_all_tags($ability); 
     $mtg_post['post_status'] = 'publish'; 
     $mtg_post['post_author'] = 1; 
     $mtg_post['post_type'] = 'post'; 
     $mtg_post['post_category'] = array(89,90); 
     $mtg_post['comment_status'] = 'closed'; 
     $mtg_post['ping_status'] = 'closed';   

     $post_id = wp_insert_post($mtg_post); 

     $meta = add_post_meta; 


     $meta($post_id, 'Mana Cost', $manacost, true); 
     $meta($post_id, 'Rarity', $rarity, true); 
     $meta($post_id, 'Condition', 'M/NM', true); 
     $meta($post_id, 'Price', $pricing_high, true); 

     echo "<td><a href=\"#$prodName\" class=\"add-to-cart et-shop-item\">\"$esc_html_e\"</a></td>"; 

     $z->next('card'); 
    } 
    echo "</table>"; 
?> 

Antwort

0

Ich endlich herausgefunden. Wenn jemand anderes auf dasselbe Problem stößt, ist hier die Lösung.

Die Variablen innerhalb von add_post_meta müssen in doppelten Anführungszeichen stehen und funktionieren nur mit einer komplexen Syntax.

Beispiel unten:

$meta = add_post_meta; 

$meta($post_id, 'Flavor', "{$flavor}");