Вопрос или проблема
Я пытаюсь включить редакции для существующего пользовательского типа записи. Поскольку тип записи был создан около 2 лет назад, я добавил revisions
в массив supports
, где регистрируется тип записи.
Раньше мой код выглядел так:
$labels = array(
'name' => 'Products',
'singular_name' => 'Product',
'all_items' => 'All Products',
'add_new' => 'Add New',
'add_new_item' => 'Add New Product',
'edit_item' => 'Edit Products',
'new_item' => 'New Product',
'view_item' => 'View Product',
'search_items' => 'Search Products',
'not_found' => 'No Prducsts Found',
'not_found_in_trash' => 'No Products in Trash',
'parent_item_colon' => ''
);
$supports = array(
'title',
'custom-fields',
'editor',
'thumbnail'
);
$args = array(
'labels' => $labels,
'public' => true,
'menu_position' => 5,
'rewrite' => array( 'slug' => 'products' ),
'has_archive' => true,
'supports' => $supports
);
register_post_type('products', $args);
А теперь он выглядит так:
$labels = array(
'name' => 'Products',
'singular_name' => 'Product',
'all_items' => 'All Products',
'add_new' => 'Add New',
'add_new_item' => 'Add New Product',
'edit_item' => 'Edit Products',
'new_item' => 'New Product',
'view_item' => 'View Product',
'search_items' => 'Search Products',
'not_found' => 'No Prducsts Found',
'not_found_in_trash' => 'No Products in Trash',
'parent_item_colon' => ''
);
$supports = array(
'title',
'custom-fields',
'editor',
'thumbnail',
'revisions'
);
$args = array(
'labels' => $labels,
'public' => true,
'menu_position' => 5,
'rewrite' => array( 'slug' => 'products' ),
'has_archive' => true,
'supports' => $supports
);
register_post_type('products', $args);
Этот код не включил редакции в пользовательском типе записи.
Тогда я нашел другой код, который добавил в файл function.php моей темы:
function add_revisions_custom_post()
{
add_post_type_support( 'products', 'revisions' );
}
add_action('init','add_revisions_custom_post');
Этот тоже не работает.
Может кто-то подсказать, как я могу включить редакции?
Заранее спасибо.
ИЗМЕНЕНИЕ:
Вот мой файл wp-config.php:
<?php
/**
* Основные настройки WordPress.
*
* Этот файл имеет следующие настройки: параметры MySQL, префикс таблицы,
* секретные ключи, язык WordPress и ABSPATH. Вы можете найти больше информации,
* посетив {@link http://codex.wordpress.org/Editing_wp-config.php страницу Codex}.
* Вы можете получить данные MySQL от вашего веб-хостинга.
*
* Этот файл используется скриптом для создания wp-config.php во время
* установки. Вы можете просто скопировать этот файл в "wp-config.php" и заполнить значения.
*
* @package WordPress
*/
// ** Настройки MySQL — вы можете получить их от вашего веб-хостинга ** //
/** Имя базы данных для WordPress */
define('WP_MEMORY_LIMIT', '64MB');
define('DB_NAME', 'MYDBNAME');
/** Имя пользователя базы данных MySQL */
define('DB_USER', 'MYDBUSER');
/** Пароль базы данных MySQL */
define('DB_PASSWORD', 'MYDBPASSWORD');
/** Хост имени MySQL */
define('DB_HOST', 'localhost');
/** Кодировка базы данных, которую необходимо использовать для создания таблиц. */
define('DB_CHARSET', 'utf8');
/** Набор типов сортировки базы данных. Не изменяйте, если не уверены. */
define('DB_COLLATE', '');
define('WP_MEMORY_LIMIT', '64MB');
/**#@+
* Уникальные ключи и соли аутентификации.
*
* Измените их на различные уникальные фразы!
* Вы можете сгенерировать их, воспользовавшись {@link https://api.wordpress.org/secret-key/1.1/salt/ сервисом WordPress.org secret-key}
* Вы можете изменить их в любое время, чтобы аннулировать все существующие куки. Это заставит всех пользователей снова войти в систему.
*
* @since 2.6.0
*/
define('AUTH_KEY', 'c7ypbekexsfbt4wiucppwewene93cbtcfhf6xgpggepycabhildsoyqpre5iv3wi');
define('SECURE_AUTH_KEY', 'ujjxufvylpndsj0qeuwa90gxawj3cgaqnyusrdbmujmb08r37pnyreorpcyxqouu');
define('LOGGED_IN_KEY', 'vwlhlmenthgrq9g5jcocihz4ndldhrpegmcp6qyb3rfmjvxjejbacv1zharaexlp');
define('NONCE_KEY', 'qhnyqgmqckh3ylasveugagqlvifiuqajl6s9e7ulfrxepdxh2mewr8qhdinua8o2');
define('AUTH_SALT', 'rlb723gcatjvkfrd3jscmvdjio3kx9apm5yie9e4ibxktnnlukvgfpgbdsohrns9');
define('SECURE_AUTH_SALT', 'pllenyye8zbtml91hekptc2clqr7bhvhlriecz5qozexfhiqptmcvxrlehj44c16');
define('LOGGED_IN_SALT', '9lyqc6qod0zdgyh6esp7bsxmpmuyp3h64m62pcnwxyefejh6tjykm7tpxhecg3xy');
define('NONCE_SALT', 'ob0bq3fye46rubbgu5flycjuai4ygxqgxho8bb1k8t81mwhghcbkysrgxrjzx0fu');
/**#@-*/
/**
* Префикс таблицы WordPress.
*
* Вы можете сделать несколько установок в одной базе данных, если дадите каждой уникальный
* префикс. Используйте только цифры, буквы и подчеркивания!
*/
$table_prefix = 'wp_';
/**
* Локализованный язык WordPress, по умолчанию английский.
*
* Измените для локализации WordPress. Перевод на выбранный
* язык должен быть установлен в wp-content/languages. Например, установите de_DE.mo в wp-content/languages и измените WPLANG на 'de_DE', чтобы включить поддержку немецкого языка.
*/
define ('WPLANG', '');
/**
* Для разработчиков: режим отладки WordPress.
*
* Измените на true, чтобы включить отображение уведомлений во время разработки.
* Настоятельно рекомендуется, чтобы разработчики плагинов и тем использовали WP_DEBUG
* в своих средах разработки.
*/
define('WP_DEBUG', false);
/* Это все, прекратите редактирование! Удачного ведения блога. */
/** Абсолютный путь к каталогу WordPress. */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . "https://wordpress.stackexchange.com/");
/** Установка переменных и включение файлов WordPress. */
require_once(ABSPATH . 'wp-settings.php');
$cap_type="post";
$plural="Products";
$single="Product";
$cpt_name="products";
$opts['supports'] = array( 'products', 'title', 'editor', 'thumbnail', 'author', 'revisions' );
$opts['can_export'] = TRUE;
$opts['capability_type'] = $cap_type;
$opts['description'] = '';
$opts['exclude_from_search'] = FALSE;
$opts['has_archive'] = TRUE;
$opts['hierarchical'] = TRUE;
$opts['map_meta_cap'] = TRUE;
$opts['menu_icon'] = 'dashicons-products';
$opts['menu_position'] = 2;
$opts['public'] = TRUE;
$opts['publicly_queryable'] = TRUE;
$opts['query_var'] = TRUE;
$opts['register_meta_box_cb'] = '';
$opts['rewrite'] = array('slug'=>'products', 'with_front'=>false);
$opts['show_in_admin_bar'] = TRUE;
$opts['show_in_menu'] = TRUE;
$opts['show_in_nav_menu'] = TRUE;
$opts['labels']['add_new'] = esc_html__( "Add New", 'wisdom' );
$opts['labels']['add_new_item'] = esc_html__( "Add New {$single}", 'wisdom' );
$opts['labels']['all_items'] = esc_html__( "All {$plural}", 'wisdom' );
$opts['labels']['edit_item'] = esc_html__( "Edit {$single}" , 'wisdom' );
$opts['labels']['menu_name'] = esc_html__( $plural, 'wisdom' );
$opts['labels']['name'] = esc_html__( $plural, 'wisdom' );
$opts['labels']['name_admin_bar'] = esc_html__( $single, 'wisdom' );
$opts['labels']['new_item'] = esc_html__( "New {$single}", 'wisdom' );
$opts['labels']['not_found'] = esc_html__( "No {$single} found", 'wisdom');
$opts['labels']['not_found_in_trash'] = esc_html__( "Not found {$plural} in Trash", 'wisdom' );
$opts['labels']['parent_item_colon'] = esc_html__( "Parent {$plural} :", 'wisdom' );
$opts['labels']['search_items'] = esc_html__( "Search {$plural}", 'wisdom' );
$opts['labels']['singular_name'] = esc_html__( $single, 'wisdom' );
$opts['labels']['view_item'] = esc_html__( "View {$single}", 'wisdom' );
register_post_type( strtolower( $cpt_name ), $opts );
попробуйте это
Во-первых, убедитесь, что все основное на месте:
register_post_type
включает'revisions'
в массив аргументовsupports
WP_POST_REVISIONS
либо не определен, либо установлен в true в wp-config.php- открыть “Экранные параметры” и убедитесь, что “Редакции” отмечены. (Хотя я думаю, это только контролирует большую мета-коробку, и маленькая ссылка “редакции” должна появляться под “видимость” независимо от того, как это установлено)
Затем убедитесь, что у вас действительно есть две версии записи, которую вы пытаетесь проверить.
- Создайте новый тестовый пост вашего CPT с любым содержимым
- Сделайте изменение/редактирование содержимого и обновите (не просто нажмите “Обновить” – обязательно измените что-то)
Теперь вы должны увидеть доступные редакции и сможете вернуться к старым версиям.
.
Ответ или решение
Вы сталкиваетесь с проблемой активации ревизий для вашего кастомного типа записи в WordPress. Давайте рассмотрим основные шаги для выявления и решения этой проблемы.
Убедитесь в правильной конфигурации кастомного типа записи
Во-первых, убедитесь, что при регистрации кастомного типа записи в массиве supports
действительно присутствует 'revisions'
. Пример кода может выглядеть следующим образом:
$supports = array(
'title',
'custom-fields',
'editor',
'thumbnail',
'revisions'
);
$args = array(
'labels' => $labels,
'public' => true,
'menu_position' => 5,
'rewrite' => array('slug' => 'products'),
'has_archive' => true,
'supports' => $supports
);
register_post_type('products', $args);
Проверьте файл wp-config.php
В файле wp-config.php
убедитесь, что параметр WP_POST_REVISIONS
либо не определен, либо установлен в true
. Если он определен и установлен в значение false
, это может быть причиной, по которой ревизии не активируются.
// Включение ревизий
define('WP_POST_REVISIONS', true);
Проверьте параметры интерфейса администратора
Откройте "Опции экрана" на странице редактирования кастомного поста и убедитесь, что "Ревизии" активированы. Это поможет убедиться, что вы видите метабокс ревизий, если он доступен.
Убедитесь в наличии нескольких версий записи
Чтобы ревизии стали видны, у записи должно быть как минимум два сохранения. Попробуйте создать новую запись вашего кастомного типа, внести изменения и сохранить их несколько раз, чтобы убедиться, что ревизии появляются правильно.
Отладка и доп. проверка
- Обратите внимание на ошибки в вашей консоли разработчика браузера, которые могут указывать на конфликты JavaScript.
- Имеются ли активные плагины, которые могут влиять на работу с ревизиями? Попробуйте временно отключить их, чтобы проверить, решит ли это проблему.
- Возможно, имеется кеширование на сервере или в плагине, которое препятствует отображению изменений. Очистите кеш и попробуйте снова.
Следуя указанным рекомендациям, вы сможете локализовать проблему и разблокировать опцию ревизий в своем кастомном типе записи WordPress. Напомню, что этот процесс может требовать нескольких попыток и проверки конфигурации на разных уровнях системы для достижения желаемого результата.