Публикация значений из Wordpress Metabox в пользовательскую таксономию - PullRequest
0 голосов
/ 13 февраля 2011

Мне было интересно, есть ли возможность публиковать вейлы из метабокса WordPress и добавлять его в пользовательскую неиерархическую таксономию (теги).

Вот код для пользовательской таксономии

// Custom taxonomy for Ingredients
register_taxonomy(  
   'ingredients',  
   'mysite_tax',  
    array(  
        'hierarchical' => false,  
        'label' => 'Ingredients',  
        'query_var' => true,  
        'rewrite' => true  
    )  
);

В настоящее время я использую метабокс wpalchemy, и код метабокса:

<div class="my_meta_control">

    <h4>Ingredients</h4>

    <?php while($mb->have_fields_and_multi('recipe_ingredients')): ?>
    <?php $mb->the_group_open(); ?>

        <?php $mb->the_field('quantity'); ?>
        <label>Quantity and Ingredients</label>
        <p><input type="text" name="<?php $mb->the_name(); ?>" value="<?php $mb->the_value(); ?>"/></p>

        <?php $mb->the_field('ingredients'); ?>
        <p><input type="text" name="<?php $mb->the_name(); ?>" value="<?php $mb->the_value(); ?>"/></p>

        <?php $selected = ' selected="selected"'; ?>

        <br/><?php $metabox->the_field('units',1); ?>
        <select name="<?php $metabox->the_name(); ?>">
        <option value="unit"<?php if ($metabox->get_the_value() == 'unit') echo $selected; ?>>--Select Unit--</option>
                    <option value="Test"<?php if ($metabox->get_the_value() == 'Test') echo $selected; ?>>Test</option>
                    <option value="Test2"<?php if ($metabox->get_the_value() == 'Test2') echo $selected; ?>>Test 2</option>
                    <option value="Test3"<?php if ($metabox->get_the_value() == 'Test3') echo $selected; ?>>Test 3</option>
        </select>

        <a href="#" class="dodelete button">Remove Document</a>
        </p>

    <?php $mb->the_group_close(); ?>
    <?php endwhile; ?>

    <p style="margin-bottom:15px; padding-top:5px;"><a href="#" class="docopy-ingredients button">Add Document</a></p>
    <br /><p><a style="float:right; margin:0 10px;" href="#" class="dodelete-ingredients button">Remove All</a></p>

</div>

Я хочу передать значения в поле ингредиента только в пользовательскую таксономию.Я новичок в php, так что это может быть довольно легко, и я не понимаю этого:)

Я могу получить значения в шаблоне страницы, используя этот код

<?php
                                    // loop a set of field groups
                                    while($ingredients_metabox->have_fields('recipe_ingredients'))
                                    {
                                        echo '<li>';
                                        $ingredients_metabox->the_value('quantity');

                                        $ingredients_metabox->the_value('ingredients');

                                        $ingredients_metabox->the_value('units');
                                        echo '</li>';
                                    }
                                ?>

Однако мне было интересно, есть ли способ поместить значения (только ингредиенты) в пользовательскую таксономию?

Ответы [ 3 ]

0 голосов
/ 16 апреля 2011

вы можете увидеть http://farinspace.com/wpalchemy-metabox/#comment-3941 для большей идеи, он состоит из нескольких хороших аргументов по теме, которая вам действительно нужна!

0 голосов
/ 17 апреля 2011

Звучит так, как будто вам нужно использовать save_filter, хотя мне интересно, подходит ли WPAlchemy. Время, потраченное на изучение WPAlchemy, может быть потрачено на изучение основных WordPress API и PHP, что будет гораздо полезнее в долгосрочной перспективе. Тем не менее, если вы решите придерживаться WPAlchemy, ниже показано, как можно реализовать * save_filter *.

<?php

    $foo_meta_box = new WPAlchemy_MetaBox(array(
        'id' => '_custom_meta',
        'title' => 'My Custom Meta',
        'template' => TEMPLATEPATH . '/custom/meta.php',
        'save_filter' => 'foo_alchemy_save_filter'
    ));

    function foo_alchemy_save_filter($meta, $post_id) {
        unset($meta['ingredients']; // remove ingredients meta data before saving
        // do your custom taxonomy stuff using taxonomy API such as wp_set_object_terms() 
        return $meta;
    }

?>
0 голосов
/ 14 февраля 2011

См. WPAlchemy комментарий и некоторые последующие комментарии.

...