Вызов мета-тега Wordpress
В настоящее время я пытаюсь создать сайт для телешоу, и из-за определенных ограничений 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 answers
Из того, что я понимаю из вашего вопроса, вы ищете простое решение для автоматизации процесса ввода. У меня есть общее представление о том, чего вы хотите достичь, поскольку мне пришлось сделать нечто подобное на веб-сайте типа брошюры.
Я пытался ответить на ваш вопрос с помощью Jquery, но я нахожу, что это увеличивает объем ввода текста, необходимый при создании вашего сообщения, к сожалению, полностью автоматизированного метода для этого нет, но, надеюсь, ниже вы найдете с решением.
Сначала я нашел следующий плагин: Типы - Полное решение для пользовательских полей и типов здесь: http://wordpress.org/extend/plugins/types/
Это позволяет создавать пользовательские мета-поля при создании нового сообщения/страницы. Пользовательские поля добавляются с добавлением "wpcf-", а затем имя поля, например "Название эпизода", становится "wpcf-название эпизода" в базе данных.
Ниже приводится редактирование 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;
}
Надеюсь, это поможет мату!
Существует замечательный плагин для WordPress под названием Pods, который может быть жизнеспособным решением.