Домой Wp-Recall WP-Recall: Пишем свое дополнение и кастомизация Вывод произвольных полей в форме публикации
16ответ(ов) в теме
Dmitryi
не в сети 5 лет
На сайте с 25.06.2016
Участник
Тем 40
Сообщения 104
1
12:18
Версия WP-Recall: 15.5.7

Добрый день, возникла необходимость организовать вывод нескольких input полей типа text, select в одной ячейке (на подобии вывода чекбоксов, который реализован в данный момент в форме публикации). Хотелось бы услышать совет, в какую сторону копать - регистрация нового типа поля, редактирование само вывода произвольных полей или можно это реализовать как-то по-другому? Для вывода произвольных полей используется Fields For Terms.

0
Андрей CS
не в сети 4 дня
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16936
2
12:37

не понял, что вам требуется и почему не подходят обычные произвольные поля?

0
Dmitryi
не в сети 5 лет
На сайте с 25.06.2016
Участник
Тем 40
Сообщения 104
3
13:06

То, что планируется реализовать, изобразил на картинке ниже ("ДО" - как реализовано сейчас, "ПОСЛЕ" - как требуется).

Вы не можете просматривать опубликованные ссылки
0
Андрей CS
не в сети 4 дня
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16936
4
13:24

принцип формирования массива с данными полей и их вывод в кастомной верстке:

//массив с данными полей
$fields = array(
	array(
	'slug' => 'field-1',
	'type' => 'select',
	'values' => array(
		'value 1',
		'value 2',
		'value 3'
	)
	),
	array(
	'slug' => 'field-2',
	'type' => 'checkbox',
	'values' => array(
		'value 1',
		'value 2',
		'value 3'
	)
	)
	array(
	'slug' => 'field-3',
	'type' => 'dynamic'
	)
);

$CF = new Rcl_Custom_Fields();

//тут контент просто оберните в свою верстку
$content = '<div>';
foreach($fields as $field){
	$content .= $CF->get_input($field);
}
$content = '</div>';

echo $content;

1
Dmitryi
не в сети 5 лет
На сайте с 25.06.2016
Участник
Тем 40
Сообщения 104
5
22:08

А как лейбл задать для чекбокса? Вариант с 'label' не работает

array(
	'slug' => 'field-2',
	'type' => 'checkbox',
         'label' => 'test1',
	'values' => array(
		'value 1',
		'value 2'
	)
	)

0
Андрей CS
не в сети 4 дня
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16936
6
14:01

по стандарту в массиве данных произвольного поля для указания наименования поля следует использовать ключ title:

'title' => __('Наименование')

а затем при переборе полей выводим заголовок поля там где нам требуется:
foreach($fields as $field){
        $content .= $CF->get_title($field);
	$content .= $CF->get_input($field);
}

1
Dmitryi
не в сети 5 лет
На сайте с 25.06.2016
Участник
Тем 40
Сообщения 104
7
22:42

Вариант вывода селектов, чекбоксов и др полей с множественными значениями не работает

array(
	'slug' => 'field-1',
	'type' => 'select',
	'values' => array(
		'value 1',
		'value 2',
		'value 3'
	)
	),

на примере селекта, выводит без option:

Вы не можете просматривать опубликованные ссылки

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

Редакции сообщения
03.10.2017 23:00Андрей CSПричина: не указано
0
Вова (Otshelnik-Fm)
не в сети 4 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18654
8
22:55

Андрей дал вам фрагмент кода - там используется экземпляр класса Rcl_Custom_Fields
Смотрите или как он устроен или поиск по плагину - в каких местах еще используют этот класс и как применяют. Там его очень много где используют

0
Dmitryi
не в сети 5 лет
На сайте с 25.06.2016
Участник
Тем 40
Сообщения 104
9
23:03

Rcl_Custom_Fields в коде плагина смотрел, но решения так и не нашёл. А если в форму публикации интегрировать input-поле напрямую, то есть сразу добавить:

<span class="rcl-field-input type-select-input"><select name="field-1" id="field-1">
        <option selected="selected" value="1">test1</option>
  <option value="2">test2</option>
  <option value="3">test3</option>
        </select></span>

, без добавления его через массив как описано выше в теме.
Поле, добавленное таким образом конфликтовать с плагином не будет? Не в курсе?

0
Андрей CS
не в сети 4 дня
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16936
10
23:13

Dmitryi сказал(а)
Вариант вывода селектов, чекбоксов и др полей с множественными значениями не работает

Неправда, вывел такой код в шапке сайта:

add_action('wp_head','sdsdsdsdsd');
function sdsdsdsdsd(){
    $fields = array(
	array(
            'slug' => 'field-1',
            'type' => 'select',
            'values' => array(
                'value 1',
                'value 2',
                'value 3'
            )
	),
	array(
            'slug' => 'field-2',
            'type' => 'checkbox',
            'values' => array(
                'value 1',
                'value 2',
                'value 3'
            )
	),
	array(
            'slug' => 'field-3',
            'type' => 'dynamic'
	)
    );

    $CF = new Rcl_Custom_Fields();

    $content = '<div>';
    foreach($fields as $field){
            $content .= $CF->get_input($field);
    }
    $content .= '</div>';

    echo $content;
}

в результате получил вполне себе правильную верстку всех элементов

Вы не можете просматривать опубликованные ссылки

Dmitryi сказал(а)
без добавления его через массив как описано выше в теме

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

1
Dmitryi
не в сети 5 лет
На сайте с 25.06.2016
Участник
Тем 40
Сообщения 104
11
23:17

Хорошо, спасибо за ответ! Буду дальше разбираться, почему не выводит поля как требуется

0
Андрей CS
не в сети 4 дня
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16936
12
23:20

кстати, может будет полезно

Вы не можете просматривать опубликованные ссылки
1
Dmitryi
не в сети 5 лет
На сайте с 25.06.2016
Участник
Тем 40
Сообщения 104
13
21:46

Мой косяк, версия wp-recall не последняя, а 15.5.7. Обновить до последней не представляется возможным. Может в предыдущих версиях массив произвольного поля формировался чуть иначе? 😕

0
Вова (Otshelnik-Fm)
не в сети 4 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18654
14
21:57

Оффтоп

Оффтоп - Андрей - снова мы с тобой проглядели что версию указали не актуальную. Причем это уже второй случай, и так недолго от первого прошло времени. Думаю что все же надо внедрять плашку:

После создания темы топикстартером и указания версии реколл - проверять какая актуальная версия плагина и если тема допа - то и допа. И пока никто не ответил топикстартеру - под его первым сообщением ему показывать что мол "обновись - проблемы как снежный ком пойдут, да и поддержка оказывается только по актуальным версиям. Ведь повторно их решать ниодин программист не будет". Ну и эта плашка чтоб была видна автору топика, и админам форума.

0
Dmitryi
не в сети 5 лет
На сайте с 25.06.2016
Участник
Тем 40
Сообщения 104
15
23:27

Разобрался, для версии 15.5.7 для селекта массив записывается в виде 'field_select' => "value1#value2#value3"

0
Dmitryi
не в сети 5 лет
На сайте с 25.06.2016
Участник
Тем 40
Сообщения 104
16
23:44

Otshelnik-Fm сказал(а)
Оффтоп - Андрей - снова мы с тобой проглядели что версию указали не актуальную. Причем это уже второй случай, и так недолго от первого прошло времени...

Нет, первый раз версия была указана последняя (16.1.5), потом, когда до меня дошло, что версия другая - я просто отредактировал тему. Лучше выводить шильдик, в случае, если тема отредактирована и изменено значение версии wp-recall.

0
Вы не имеете права на публикацию сообщений в этой теме