Обновлено 2011.02.04 (1.0.2) — исправлен баг с редактированием полей, загрузкой файлов. исправлена инструкция по настройке плагина.
Обновлено 2011.01.09 (1.0.1) — исправлен баг с выводом массива в функции.[/spoiler]
Создание дополнительных полей (custom fields) для WordPress, наверное, никогда не было проблемой. А вот с набором полей (fieldsets) немного сложнее. Оказывается у замечательного плагина Custom Fields Template есть такая возможность. Однако, почему-то она не документируется (или я не нашел?!) в списке его опций…
Но, казалось бы, всё решено! Но нет… Есть еще одна мелочь. А это — порядок вывода этих полей меняется при каждом сохранении. Кто столкнулся с этим — знает, о чем речь идёт.
Конечно, решение есть и для этого.
ОБНОВЛЕНИЕ (2011/02/04): Также мучал меня постоянно баг с загрузкой файлов — часто после сохранения файлы пропадали. В «Media Library» они добавлялись, но в custom полях — нет. Не хочется повторяться, НО решение есть и для этого. 😉
Устанавливаем плагин Custom Fields Template. Для создания набора полей используем следующий код:
[fieldset_name-fieldset] type = fieldset_open multiple = true multipleButton = true [fieldset_name-your_field_name_1] type = textfield label = Title blank = true [fieldset_name-your_field_name_2] type = textfield label = Title [fieldset_name-fieldset] type = fieldset_close
Где «fieldset_name-» — это имя набора полей. Вы можете поменять его на свое, однако у всех полей название обязательно должно начинаться с имени, которое вы зададите. Имя нужно задать такое, чтобы оно не совпадало с другими полями.
«your_field_name_1» — имя поля, которое вы меняете на свое.
Также убедитесь, что у каждого поля есть атрибут blank = true, кроме полей типа file — этой опции для таких полей не надо задавать true.
Далее, в файле с вашими функциями (обычно это functions.php) добавляете следующее:
/**
* Constructs an ordered array from cf metadata
*
* @param string $like_item set in the CFT plugin based on the repeating fieldset name e.g. "test-" would use 'test-fieldset'.
* Keep the meta_key unique.
* @return array associated array
*/
function get_cft_fieldset_data($like_item) {
global $post, $wpdb;
$sql = "SELECT * FROM $wpdb->postmeta WHERE post_id = $post->ID AND meta_key LIKE '%" . $like_item . "%' ORDER BY meta_id ASC";
$data_objects = $wpdb->get_results($sql);
$res = array();
$ar = array();
$fieldset = $like_item . 'fieldset';
if($data_objects) {
foreach ($data_objects as $data) {
if ($data->meta_key == $fieldset) continue;
$ar["$data->meta_key"][]=$data->meta_value;
}
if(count($ar)>0) foreach ($ar as $key => $ar2) {
$i = 0;
foreach ($ar2 as $value) {
$res[$i][$key] = $value;
$i++;
}
}
}
return $res;
}
И уже в темплейте используем следующий код:
<?php
$fieldset_data = get_cft_fieldset_data('fieldset_name-');
?>
Или вот так:
<?php
$fieldset_data = get_cft_fieldset_data('fieldset_name-');
if($fieldset_data) :
?>
<?php foreach($fieldset_data as $k => $item) : if(!$item['fieldset_name-your_field_name_1']) continue; ?>
<?php echo $item['fieldset_name-your_field_name_1']; ?>
<?php echo $item['fieldset_name-your_field_name_2']; ?>
<?php endforeach; ?>
<?php endif; ?>
Решение было найдено на сайте WordPress.org от юзера proximity2008 и немного модифицировано мною.
Конечно, юзер proximity2008 сделал мне головной боли немного, т.к. в процессе выявления ошибок плагина, я понял, что у полей типа file не надо делать blank = true. Это одна из причин того, что файлы не сохраняются.
Другая причина — недоработки в коде плагина. Давайте посмотрим, как можно это исправить.
В файле плагина custom-field-template/custom-field-template.php находим строку 2641 и после неё добавляем следующий код:
$temp[$name]=$data['parentSN'];
Должно получиться вот так:
if ( $data['type'] == 'file' ) : $temp[$name]=$data['parentSN'];
Далее после строки 2678 добавляем следующий код:
if($temp) foreach($temp as $key => $psn) $_REQUEST[$key][$psn] = $save_value[$key];
Вот вроде бы и всё. У плагина всё-равно еще остаются кое-какие баги с добавлением/удалением файлов, но в общем должно работать.
Ну а в поддержку проекта смотрим: Электроника со скидками




Pingback: webhostingchalk()
Pingback: webhostingchalk()
Pingback: online games()
Pingback: Scary Maze Game()
Pingback: tech()
Pingback: video sharing()
Pingback: jzvgqdtth()
Pingback: บิงโก()
Pingback: cash advance companies()
Pingback: psicologo()
Pingback: Check These Guys Out()
Pingback: bioshock infinite free download()
Pingback: read here()
Pingback: www.increasevideoviews.com()
Pingback: web site hosting()
Pingback: web hosting()
Pingback: Fast Cash()
Pingback: pay day cash loans()
Pingback: check my reference()
Pingback: best real estate websites()
Pingback: pailletjes()
Pingback: car accident lawyer()
Pingback: raspberry ketones()
Pingback: More info()
Pingback: free mp3 download()
Pingback: New Shemale escort London()
Pingback: Gifts Lobby - Gift Baskets and hampers, Corporate Gifts, Baby Gifts, Christmas Gifts()
Pingback: Australia Wide Delivery()
Pingback: ineedmoneycashnow.com()
Pingback: don't starve free download()
Pingback: Fast Loans With Bad Credit()
Pingback: don't starve free download()
Pingback: apartments in Alanya()
Pingback: comprar cafeteras()
Pingback: mobile websites backlinks()
Pingback: real()
Pingback: dishonored free download pc()
Pingback: grid 2 free download()
Pingback: metro last light free download()
Pingback: locksmith university city philadelphia()
Pingback: tatuaggi maori sul polpaccio()
Pingback: Need a loan fast()
Pingback: check this()
Pingback: 30daystothinreview.net()
Pingback: my website()
Pingback: foulards()
Pingback: locksmith miami florida()
Pingback: sittercity promo code()
Pingback: szrctgfyfrseshgjgyftre()
Pingback: muinuhbytrfcexyuhuigt()
Pingback: ctrctvuybuininubbuy()
Pingback: dallas roofers()
Pingback: Moe kash()
Pingback: how long does a background check take()
Pingback: laser optics()
Pingback: bookmarking sites()
Pingback: mdansby legal suite()
Pingback: Christian dating()
Pingback: poskota()
Pingback: how to get rid of fear of germs()
Pingback: tv de graca()
Pingback: Telephone answering Glasgow()
Pingback: Beau Shehorn()
Pingback: bookmarking list()
Pingback: Download Adobe Photoshop CS6()
Pingback: bookmarking sites()
Pingback: buy guzheng()
Pingback: http://nohyoo.com/story.php?title=arife-aksu()
Pingback: bookmarking sites()
Pingback: doctors note()
Pingback: car bill of sale()
Pingback: social bookmarking sites()
Pingback: site()
Pingback: test of typing()
Pingback: XXX()
Pingback: stretch marks()
Pingback: kinds of drums()
Pingback: is paleo diet healthy()
Pingback: spoange silicone sheet()
Pingback: http://www.memoryroad.info/()
Pingback: free credit repot and score all 3 bureaus()