Ivseti
@Ivseti
Фронтенд HTML, CSS и немного JS с PHP

Как зарегистрировать register_post_types не нагружая memory size?

Всем привет! Регистрирую второй тип записей и сразу получаю ошибку, что не хватает памяти:

Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 20480 bytes)


Явно, что тут, что-то не так. Изначально второй тип записей добавил, как отдельную функцию registered_post_type_(post_type), потом добавил второй тип записей в основную функцию registered_post_type, где находится первый тип записей. И все равно получаю ошибку, что не хватает памяти. Что я делаю не так ?

Я пробовал добавить в конфиг
define( 'WP_MEMORY_LIMIT', '512M' );

И пробовал добавить в php.ini
memory_limit = 512M

Но все равно получаю ошибку. Мой код в function.php выглядит так:

add_action( 'init', 'register_post_types' );

function register_post_types(){

	register_post_type( 'job-list', [
		'label'  => null,
		'labels' => [
			'name'               => 'Вакансии', // основное название для типа записи
			'singular_name'      => 'Добавить вакансию', // название для одной записи этого типа
			'add_new'            => 'Добавить вакансию', // для добавления новой записи
			'add_new_item'       => 'Добавление вакансии', // заголовка у вновь создаваемой записи в админ-панели.
			'edit_item'          => 'Редактирование вакансии', // для редактирования типа записи
			'new_item'           => 'Новое ____', // текст новой записи
			'view_item'          => 'Смотреть вакансию', // для просмотра записи этого типа.
			'search_items'       => 'Искать вакансию', // для поиска по этим типам записи
			'not_found'          => 'Вакансий не найдено', // если в результате поиска ничего не было найдено
			'not_found_in_trash' => 'Вакансий не найдено в корзине', // если не было найдено в корзине
			'parent_item_colon'  => '', // для родителей (у древовидных типов)
			'menu_name'          => 'Вакансии', // название меню
		],
		'description'            => 'Вакансии Эскела Job',
		'public'                 => true,
		'publicly_queryable'  => true, // зависит от public
		'exclude_from_search' => true, // зависит от public
		'show_ui'             => true, // зависит от public
		'show_in_nav_menus'   => true, // зависит от public
		'show_in_menu'           => true, // показывать ли в меню админки
		'show_in_admin_bar'   => true, // зависит от show_in_menu
		'show_in_rest'        => true, // добавить в REST API. C WP 4.7
		'rest_base'           => null, // $post_type. C WP 4.7
		'menu_position'       => 3,
		'menu_icon'           => get_template_directory_uri() .'/images/favicon/eskela.png',
		//'capability_type'   => 'post',
		//'capabilities'      => 'post', // массив дополнительных прав для этого типа записи
		//'map_meta_cap'      => null, // Ставим true чтобы включить дефолтный обработчик специальных прав
		'hierarchical'        => false,
		'supports'            => [ 'title', 'editor', 'thumbnail', 'custom-fields', 'author' ], // 'title','editor','author','thumbnail','excerpt','trackbacks','custom-fields','comments','revisions','page-attributes','post-formats'
		'taxonomies'          => [],
		'has_archive'         => false,
		'rewrite'             => true,
		'query_var'           => true,
	] );

	register_post_types( 'reviews-post', [
		'label'  => null,
		'labels' => [
			'name'               => 'Отзывы', // основное название для типа записи
			'singular_name'      => 'Отзыв', // название для одной записи этого типа
			'add_new'            => 'Добавить отзыв', // для добавления новой записи
			'add_new_item'       => 'Добавление отзыва', // заголовка у вновь создаваемой записи в админ-панели.
			'edit_item'          => 'Редактирование отзыва', // для редактирования типа записи
			'new_item'           => 'Новый отзыв', // текст новой записи
			'view_item'          => 'Смотреть отзыв', // для просмотра записи этого типа.
			'search_items'       => 'Искать отзывы', // для поиска по этим типам записи
			'not_found'          => 'Не найдено отзывов', // если в результате поиска ничего не было найдено
			'not_found_in_trash' => 'Не найдено в корзине', // если не было найдено в корзине
			'parent_item_colon'  => '', // для родителей (у древовидных типов)
			'menu_name'          => 'Отзывы', // название меню
		],
		'description'            => 'Блок отзывов Eskela Job',
		'public'                 => true,
		'publicly_queryable'  => true, // зависит от public
		'exclude_from_search' => true, // зависит от public
		'show_ui'             => true, // зависит от public
		'show_in_nav_menus'   => true, // зависит от public
		'show_in_menu'           => true, // показывать ли в меню админки
		'show_in_admin_bar'   => true, // зависит от show_in_menu
		'show_in_rest'        => true, // добавить в REST API. C WP 4.7
		'rest_base'           => null, // $post_type. C WP 4.7
		'menu_position'       => 3,
		'menu_icon'           => get_template_directory_uri() .'/images/favicon/eskela.png',
		//'capability_type'   => 'post',
		//'capabilities'      => 'post', // массив дополнительных прав для этого типа записи
		//'map_meta_cap'      => null, // Ставим true чтобы включить дефолтный обработчик специальных прав
		'hierarchical'        => false,
		'supports'            => [ 'title', 'editor', 'thumbnail', 'custom-fields', 'author' ], // 'title','editor','author','thumbnail','excerpt','trackbacks','custom-fields','comments','revisions','page-attributes','post-formats'
		'taxonomies'          => [],
		'has_archive'         => false,
		'rewrite'             => true,
		'query_var'           => true,
	] );

}
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
IvanU7n
@IvanU7n
бесконечная рекурсия: внутри register_post_types() безусловно вызывается register_post_types()
вторая регистрация типа поста должна быть register_post_type() без s
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ivseti
@Ivseti Автор вопроса
Фронтенд HTML, CSS и немного JS с PHP
Получилось. Взял пример на WP -Kama с книгами:

add_action('init', 'my_custom_init');
function my_custom_init(){
	register_post_type('book', array(
		'labels'             => array(
			'name'               => 'Книги', // Основное название типа записи
			'singular_name'      => 'Книга', // отдельное название записи типа Book
			'add_new'            => 'Добавить новую',
			'add_new_item'       => 'Добавить новую книгу',
			'edit_item'          => 'Редактировать книгу',
			'new_item'           => 'Новая книга',
			'view_item'          => 'Посмотреть книгу',
			'search_items'       => 'Найти книгу',
			'not_found'          => 'Книг не найдено',
			'not_found_in_trash' => 'В корзине книг не найдено',
			'parent_item_colon'  => '',
			'menu_name'          => 'Книги'

		  ),
		'public'             => true,
		'publicly_queryable' => true,
		'show_ui'            => true,
		'show_in_menu'       => true,
		'query_var'          => true,
		'rewrite'            => true,
		'capability_type'    => 'post',
		'has_archive'        => true,
		'hierarchical'       => false,
		'menu_position'      => null,
		'supports'           => array('title','editor','author','thumbnail','excerpt','comments')
	) );
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽