php РегистрацияCPT,удалениеизссылокимяCPTипереадресацияприпопыткезапроситьCPTподефолтномуадресу。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php РегистрацияCPT,удалениеизссылокимяCPTипереадресацияприпопыткезапроситьCPTподефолтномуадресу。相关的知识,希望对你有一定的参考价值。

<?php

// Делает перенаправление, если открыть страницу CTP (кроме архивной) по дефолтному адресу.
if ( preg_match( '~/services/.+~', $_SERVER[ 'REQUEST_URI' ] ) ) {
	$url = str_replace( '/services/', '/', $_SERVER[ 'REQUEST_URI' ] );
	wp_redirect( $url, 301 );
	exit();
}

add_filter( 'post_type_link', 'cpt_service_remove_slug', 10, 2 );
add_action( 'pre_get_posts', 'cpt_service_add_in_main_query' );
add_action( 'init', 'cpt_service_register' );

/**
 * Регистрирует новый тип записи "Услуги".
 */
function cpt_service_register() {
	register_post_type( 'services', array(
		'labels'             => array(
			'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'          => 'Услуги',
		
		),
		'public'             => true,
		'publicly_queryable' => true,
		'show_ui'            => true,
		'show_in_menu'       => true,
		'query_var'          => true,
		'rewrite'            => true,
		'capability_type'    => 'page',
		'has_archive'        => true,
		'hierarchical'       => false,
		'supports'           => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' ),
	) );
}

/**
 * Удаляет префикс с именем типа записи из URL.
 *
 * @param $post_link
 * @param $post
 *
 * @return mixed
 */
function cpt_service_remove_slug( $post_link, $post ) {
	if ( $post->post_type === 'services' ) {
		return str_replace( "/$post->post_type/", '/', $post_link );
	}
	
	return $post_link;
}

/**
 * Добавляет тип записи в запрос.
 *
 * @param WP_Query $query
 */
function cpt_service_add_in_main_query( $query ) {
	if ( is_admin() || ! $query->is_main_query() ) {
		return;
	} // не основной запрос или в админке
	
	// не запрос с name параметром (как у постоянной страницы)
	if ( ! isset( $query->query[ 'page' ] ) || empty( $query->query[ 'name' ] ) || count( $query->query ) != 2 ) {
		return;
	}
	
	$query->set( 'post_type', array( 'post', 'page', 'services' ) );
}

以上是关于php РегистрацияCPT,удалениеизссылокимяCPTипереадресацияприпопыткезапроситьCPTподефолтномуадресу。的主要内容,如果未能解决你的问题,请参考以下文章

La Sylphide 仙女

php 用户客户логинрегистрацияисменапаролянафронтенде

python Скриптпреобразованияматрицызаполняемойпострочновматрицузаполняемуюпоспирали---найденчерезгугл

php Двациклавнутри1гослайдераforeachinforобверткадлядвухцикловслайдыдлядвухциклов

php Проверкаестьлифильтрынавигацияпродуктывтекущейкатегории

php ОставляетуказанныегруппыполейACFнастраницеуказанныхтерминоввадминке,анаостальныхудаляет。