Проблема метатега Wordpress - PullRequest
       15

Проблема метатега Wordpress

4 голосов
/ 24 ноября 2011

В настоящее время я пытаюсь создать сайт для телешоу, и из-за определенных ограничений WordPress это становится проблемой.

Однако я обошел это без использования пользовательских мета-полей в файле functions.php, и теперь моя проблема заключается в том, что он мне нужен для активного создания новых полей при отправке информации в текущем поле.Например, имена пользовательских метабоксов:
(Episode Name="This is It") (Episode Number="1") (Season Number="5")

Вместо того, чтобы создавать все поля с самого начала, я бы хотел использовать Javascript (jQuery) или любое решение для автоматического создания нового набора этих 3.ящики
(Episode Name="") (Episode Number="") (Season Number=""), поэтому я могу просто вводить новую информацию по мере их поступления.Заранее благодарю за помощь!

Примечание: Я потратил слишком много времени на WordPress, чтобы просто переключиться на другой CMS, так что на данный момент это не вариант.

Ответы [ 3 ]

2 голосов
/ 22 декабря 2011

Исходя из того, что я понимаю по вашему вопросу, вы ищете простое решение для автоматизации процесса ввода. У меня есть общее представление о том, чего вы должны достичь, поскольку мне приходилось делать что-то похожее на веб-сайте типа брошюры.

Я пытался ответить на ваш вопрос с помощью Jquery, но я считаю, что это увеличивает объем ввода текста, необходимый при создании вашего сообщения, к сожалению, не существует полностью автоматизированного способа сделать это, но, надеюсь, приведенное ниже даст вам решение.

Сначала я нашел следующий плагин: Типы - Полное решение для пользовательских полей и типов здесь: http://wordpress.org/extend/plugins/types/

Это позволяет вам создавать собственные метафайлы при создании нового поста / страницы. Пользовательские поля добавляются с добавлением «wpcf-», а затем с именем поля, например, «Имя эпизода» становится «wpcf-episode-name» в базе данных.

Ниже приводится правка функции get_meta в wordpress:

function get_specifications(){
    if ( $keys = get_post_custom_keys() ) {
    echo '<div class="entry_specifications">';
    foreach ( (array) $keys as $key ) {
        $keyt = trim($key);
            if ( '_' == $keyt[0] )
            continue;
            $values = array_map('trim', get_post_custom_values($key));
            $value = implode($values,', ');

            //remove "wpcf-"
            $key = str_replace('wpcf-','',$key);

            //convert "-" to a space " "
            $key = str_replace('-',' ',$key);

            //check if it has a value, continue if it does, skip if it doesn't:
            if ($value <> ''){
                echo apply_filters('the_meta_key', "
                <div class='meta_wrapper'>
                    <div class='meta_title'>$key</div>
                    <div class='meta_value'>$value</div>
                </div>\n", $key, $value);
            };

        }

   }
   // echo '</div>'; comment out and remove the line below if you are not using floats in your css
   echo '</div><div class="clear"></div>';
}

В моем page.php (или в вашем template-page.php) я добавил следующий код, когда / где я хочу, чтобы мета создавалась:

<?php

//check to see if there is meta data, as you only want the meta data on TV Program pages
$met_check = get_post_meta($post->ID, 'wpcf-features', true);

if ($met_check <> ''){ 
//if it has a value, spit out "About EpisodeName" ?>  
    <h2 class="post-title clear">About <?php echo $title ?></h2>

    <?php //perform the function from functions.php and return results:
    echo get_specifications();
}
?>

Я стилизовал результат с помощью следующего CSS:

.meta_entry {
    clear:both;
}
.meta_title {
    float:left;
    text-transform:capitalize;
    width:200px;
}
.meta_value {
    float:left;
    width:480px;
}

Надеюсь, это поможет, приятель!

2 голосов
/ 24 ноября 2011

Существует замечательный плагин для WordPress под названием Pods , который может быть жизнеспособным решением.

1 голос
/ 24 ноября 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...