Ошибка таблицы MTG MYSQL с ненадлежащим функционированием add_meta_data - PullRequest
0 голосов
/ 26 марта 2012

Я опустил часть кода, чтобы его было легче просматривать.Что он делает, так это извлекает из списка XML список карточек сбора и заполняет его таблицей mysql.Как только таблица заполняется для каждой карты, она автоматически создает сообщение для каждой карты и заполняет данные.

Большая часть вводимых данных будет выполняться через настраиваемые поля.Все, что вы видите здесь, работает отлично, за исключением одной части в области пользовательских полей, которую я не совсем понимаю.

Wordpress Codex перечисляет настраиваемые поля, например:

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

Пример

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

Ни одно из моих настраиваемых полей не работает, кроме одного, которое:

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

Что касается других пользовательских полей, которые не работают, все они содержат переменные, например, так:

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

Я пробовал несколько различных методов без успеха.В сети есть множество примеров, где переменные использовались в add_meta_data, поэтому я просто не смог найти, почему он работает неправильно.Это застряло у меня в последние 2 дня.Есть идеи?

Плюс, как в мире вы прикрепляете фотографию в качестве изображения к этому сообщению?

<?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>";
?>

1 Ответ

0 голосов
/ 28 марта 2012

Я наконец понял это.Поэтому, если кто-то столкнется с этой же проблемой, вот исправление.

Переменные, которые находятся в add_post_meta, должны быть заключены в двойные кавычки, и это будет работать только со сложным синтаксисом.

Пример ниже:

$meta = add_post_meta;

$meta($post_id, 'Flavor', "{$flavor}");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...