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настраницеуказанныхтерминоввадминке,анаостальныхудаляет。