Intereting Posts
Заполнить заголовки сообщений из сообщения? Переход на новый домен на одном сервере Как предотвратить автоматическое преобразование тире в & ndash; Как ограничить доступ к одному для пользователей, которых я разрешил? Обнуление учетных данных пользователя WordPress Удалить rel = "приложение wp-att-XX" qTranslate: Скрыть нетранслируемый контент Оптимальный способ перенаправления домашней страницы в архив категорий? Как удалить повторяющийся запрос на загрузку страницы или сделать их доступными для кэширования вызов вызова класса импорта из действия в плагине перед выполнением wp_cron Почему мой get_post_meta всегда пуст Как сделать виджет пользовательской панели мониторинга для отображения пользовательского уведомления от администратора? Отображение пользовательской таксономии в виде выпадающего меню на странице редактирования сообщений Есть ли способ найти, какое действие / крюк уволен? WP / WooCommerce REST API cart / checkout / order

Как обновить постоянную ссылку повсюду для пользовательского типа сообщений?

Я пытаюсь выделить свои маркетинговые целевые страницы (сжимать страницы) в отдельные типы сообщений, чтобы упростить их организацию, а также упростить взаимодействие с некоторыми из моих плагинов. Я работаю прямо сейчас после создания пользовательского типа сообщений через GenerateWP , и я изменил постоянную ссылку, чтобы удалить пул типа post, используя здесь фрагмент. Автоматически созданные ссылки на новый тип сообщения, как представляется, используют немодифицированный URL-адрес, который включает post_type, и который теперь разрешает 404. Примером является ссылка «Просмотр» в списке элементов на экране списка настраиваемых типов сообщений.

Есть ли способ постоянно изменять постоянную ссылку, чтобы любые ссылки на сообщение генерировали один и тот же URL-адрес? Вот что я имею прямо сейчас:

if ( ! function_exists('bh_squeeze_page') ) { // Register Custom Post Type function bh_squeeze_page() { $labels = array( 'name' => _x( 'Squeeze Pages', 'Post Type General Name', 'text_domain' ), 'singular_name' => _x( 'Squeeze Page', 'Post Type Singular Name', 'text_domain' ), 'menu_name' => __( 'Squeeze Pages', 'text_domain' ), 'name_admin_bar' => __( 'Squeeze Page', 'text_domain' ), 'archives' => __( 'Squeeze Page Archives', 'text_domain' ), 'attributes' => __( 'Squeeze Page Attributes', 'text_domain' ), 'parent_item_colon' => __( 'Parent Squeeze Page:', 'text_domain' ), 'all_items' => __( 'All Squeeze Pages', 'text_domain' ), 'add_new_item' => __( 'Add New Squeeze Page', 'text_domain' ), 'add_new' => __( 'Add New', 'text_domain' ), 'new_item' => __( 'New Squeeze Page', 'text_domain' ), 'edit_item' => __( 'Edit Squeeze Page', 'text_domain' ), 'update_item' => __( 'Update Squeeze Page', 'text_domain' ), 'view_item' => __( 'View Squeeze Page', 'text_domain' ), 'view_items' => __( 'View Squeeze Pages', 'text_domain' ), 'search_items' => __( 'Search Squeeze Page', 'text_domain' ), 'not_found' => __( 'Not found', 'text_domain' ), 'not_found_in_trash' => __( 'Not found in Trash', 'text_domain' ), 'featured_image' => __( 'Featured Image', 'text_domain' ), 'set_featured_image' => __( 'Set featured image', 'text_domain' ), 'remove_featured_image' => __( 'Remove featured image', 'text_domain' ), 'use_featured_image' => __( 'Use as featured image', 'text_domain' ), 'insert_into_item' => __( 'Insert into item', 'text_domain' ), 'uploaded_to_this_item' => __( 'Uploaded to this item', 'text_domain' ), 'items_list' => __( 'Items list', 'text_domain' ), 'items_list_navigation' => __( 'Items list navigation', 'text_domain' ), 'filter_items_list' => __( 'Filter items list', 'text_domain' ), ); $rewrite = array( 'slug' => 'sp', 'with_front' => false, 'pages' => true, 'feeds' => true, ); $args = array( 'label' => __( 'Squeeze Page', 'text_domain' ), 'description' => __( 'Squeeze Pages', 'text_domain' ), 'labels' => $labels, 'supports' => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'trackbacks', 'revisions', 'custom-fields', 'page-attributes', 'post-formats', ), 'taxonomies' => array( 'category' ), 'hierarchical' => true, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'menu_position' => 5, 'show_in_admin_bar' => true, 'show_in_nav_menus' => true, 'can_export' => true, 'has_archive' => false, 'exclude_from_search' => false, 'publicly_queryable' => true, 'rewrite' => $rewrite, 'capability_type' => 'page', 'show_in_rest' => false, 'rest_base' => 'bh_squeeze_page', ); register_post_type( 'bh_squeeze_page', $args ); } add_action( 'init', 'bh_squeeze_page', 0 ); function na_remove_slug( $post_link, $post, $leavename ) { if ( 'bh_squeeze_page' != $post->post_type || 'publish' != $post->post_status ) { return $post_link; } $post_link = str_replace( '/' . $post->post_type . '/', '/', $post_link ); return $post_link; } add_filter( 'post_type_link', 'na_remove_slug', 10, 3 ); function na_parse_request( $query ) { if ( ! $query->is_main_query() || 2 != count( $query->query ) || ! isset( $query->query['page'] ) ) { return; } if ( ! empty( $query->query['name'] ) ) { $query->set( 'post_type', array( 'post', 'bh_squeeze_page', 'page' ) ); } } add_action( 'pre_get_posts', 'na_parse_request' ); } 

Solutions Collecting From Web of "Как обновить постоянную ссылку повсюду для пользовательского типа сообщений?"

Эта строка:

 $post_link = str_replace( '/' . $post->post_type . '/', '/', $post_link ); 

не делает то, что вы ожидаете, потому что ваш пост- $post->post_type не является $post->post_type , это sp , как указано здесь:

 $rewrite = array( 'slug' => 'sp', 'with_front' => false, 'pages' => true, 'feeds' => true, );