Домой Wp-Recall WP-Recall: Проблемы и решения WP-Recall, при публикации в custom post type не сохраняется таксономия и не выводятся произвольные поля
10ответ(ов) в теме
Сергей Че
не в сети 9 лет
На сайте с 17.05.2016
Участник
1
08:48

Добрый день.

Создал custom post type - ads и в нем таксономию - cats.

В соответствии с

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

вывожу форму на странице [ public-form post_type="ads" ],
в functions.php добавил фильтр для вывода таксономий, в форме все прекрасно выводится.
Но при публикации таксономия не назначается, в админке запись без назначенной таксономии.

Также небольшая проблема с выводом полей публикации. Они просто не выводятся при указании post_type в форме (выводятся только при использовании стандартного [ public-form ] без параметров). В админке "выводить поля автоматически" не срабатывает. Эту проблему решил добавлением полей через functions.php, но осадочек остается.

Плагин последней версии, другие плагины отключал для тестов.

0
Андрей CS
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16929
2
11:18

Полный пример создания формы публикации для произвольного типа записи с таксономией и произвольными полями:

add_filter('taxonomy_public_form_rcl','add_taxonomy_adv');
function add_taxonomy_adv($tax){
    if (!isset($tax['advertisement'])) $tax['advertisement'] = 'adv-category';
    return $tax;
}

add_filter('pre_update_postdata_rcl','add_publicdata_advertisement_rcl',10,2);
function add_publicdata_advertisement_rcl($postdata,$data){

    if(!$_POST['cats']||$data->post_type!='advertisement') return $postdata;

    $cats = get_terms('adv-category');

    $term_l = new Rcl_Edit_Terms_List();
    $new_cat = $term_l->get_terms_list($cats,$_POST['cats']);

    $postdata['tax_input']['adv-category'] = $new_cat;

    return $postdata;

}

add_action('admin_menu', 'add_edit_page_custom_fields',30);
function add_edit_page_custom_fields(){
	add_submenu_page( 'manage-wprecall', 'Произвольные поля', 'Произвольные поля', 'manage_options', 'manage-fields-my-post-type', 'page_fields_my_custom_type');
}

function page_fields_my_custom_type(){

    rcl_sortable_scripts();

    include_once RCL_PATH.'functions/rcl_editfields.php';

    $f_edit = new Rcl_EditFields('advertisement');
    if($f_edit->verify()) $fields = $f_edit->update_fields();

    $fields = '<h2>Произвольные поля для объявлений</h2>';

    $fields .= $f_edit->edit_form();

    echo $fields;
}

add_action('admin_init', 'add_admin_fields_post_type_rcl', 1);
function add_admin_fields_post_type_rcl() {
    add_meta_box( 'custom_fields_editor_post', 'Произвольные поля объявлений', 'custom_fields_list_posteditor_rcl', 'advertisement', 'normal', 'high'  );
}

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

0
Сергей Че
не в сети 9 лет
На сайте с 17.05.2016
Участник
3
11:49

Спасибо! Добавил второй фильтр для выборки таксономий и все заработало.

Но очень хотелось бы видеть и реализацию через дополнение публикаций на будущее.

0
Андрей CS
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16929
4
11:53

Сергей Че сказал(а)

Но очень хотелось бы видеть и реализацию через дополнение публикаций на будущее.

не понял, что за реализацию через дополнение публикаций? Приведенный выше код полностью опирается на дополнение публикаций

0
Сергей Че
не в сети 9 лет
На сайте с 17.05.2016
Участник
5
12:13

Андрей CS сказал(а)
не понял, что за реализацию через дополнение публикаций? Приведенный выше код полностью опирается на дополнение публикаций

Имеется в виду, чтобы ничего не приходилось дописывать в файле функций. Произвольные поля для формы ID 1 создаю - не выводятся для custom post type, только для категорий по умолчанию.
И хотелось бы в шоткоде указать таксономию, например, tax="taxonomy_name". Сейчас все это работает только при прописывании в functions.php.

P.S.: Это связано косвенно с вышеизложенным, но как сделать, чтобы в личном кабинете - вкладка Публикации выводила записи из моих custom post types? На странице публикации учет публикаций ведется (думаю, там стоит простой подсчет постов со статусом publish у автора).

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

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

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

Пример вывода списка публикаций определенного типа записи в ЛК пользователя

add_action('init','rcl_add_postlist_group',10);
function rcl_add_postlist_group(){
    rcl_postlist('group','post-group',__('Record groups','wp-recall'),array('order'=>40));
}

0
Сергей Че
не в сети 9 лет
На сайте с 17.05.2016
Участник
8
12:41

Спасибо. Все работает, не заметил этой функции в API.

И последний вопрос, как скрыть текущую вкладку Записи в Публикациях? Хотел задать ей class через аргументы, как в указанном выше примере, но PHP выдает ошибку о повторном декларировании.

0
Вова (Otshelnik-Fm)
не в сети 2 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18654
9
12:47

как скрыть текущую вкладку Записи в Публикациях?

Возможно это вам поможет:

Вы не можете просматривать опубликованные ссылки
0
Сергей Че
не в сети 9 лет
На сайте с 17.05.2016
Участник
10
12:56

Да, спасибо, это поможет.

Спасибо за классный плагин!

0
Тема закрыта. Публикация новых сообщений запрещена.