Включенные изменения в существующем пользовательском типе записи не работают в WordPress.

Вопрос или проблема

Я пытаюсь включить редакции для существующего пользовательского типа записи. Поскольку тип записи был создан около 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. Напомню, что этот процесс может требовать нескольких попыток и проверки конфигурации на разных уровнях системы для достижения желаемого результата.

Оцените материал
Добавить комментарий

Капча загружается...