user
  • 0
Гуру

Возможно ли, чтобы WordPress не распознавал URL-адреса категорий?

  • 0

Я не хочу поддерживать категории на своем сайте WordPress.

Я знаю, что у меня может быть пустая страница category.php для обслуживания пользователей, использующих URL-адрес для прямого запроса категории по умолчанию (/category/Uncategorized), но мне было интересно, есть ли способ отключить WordPress распознавание URL-адресов категорий, поэтому что любая попытка доступа к ним приведет к странице 404?

Спасибо.

Share
  1. Посмотрите на код @scribu, предложенный для функции unregister_taxonomy_from_object_type($taxonomy, $object_type) (последний патч на данный момент).
    Пока код не попал в ядро, добавьте его в свой functions.php, заверните в a function_exists() и вызовите на init .

    unregister_taxonomy_from_object_type( 'category', 'post' );
    
    • 0
  2. Я не знаю навскидку, можно ли «отключить» категории в WordPress, но вы можете выполнить то, о чем просите, с помощью простых правил перезаписи.htaccess.

    например, только для /категории

    RedirectMatch 301 ^/category/$ http://example.com/404.html
    

    для всех подкаталогов и страниц, связанных через /category/ *

    RedirectMatch 301 ^/category/.*$ http://example.com/404.html
    

    Вы хотите использовать 301, чтобы сообщить Google и сделать так, чтобы это было постоянным изменением. Также я предлагаю вместо того, чтобы отправлять их на страницу 404, просто отправлять запросы на домашнюю страницу, если ссылка на сайт никогда не существовала, а если она есть и связана, то страница 404 с полезной информацией.

    пс. подсветка синтаксиса делает вышеприведенные странные цвета.

    • 0
  3. Я бы выбрал способ, который предложил @toscho.

    Во всяком случае, вот решение, которое полностью удаляет встроенную таксономию. Я бы не советовал вам его использовать (может вызвать неожиданное поведение).

    /**
     * Remove built in taxonomies
     */
    function unregister_taxonomy( $taxonomy ) 
    {
        global $wp_taxonomies;
    
        // Here we can take a separated look at the built in taxonomies
        echo '<pre>';
            /*
            print_r( $wp_taxonomies['category'] );
            print_r( $wp_taxonomies['post_tag'] );
            print_r( $wp_taxonomies['nav_menu'] );
            print_r( $wp_taxonomies['link_category'] );
            print_r( $wp_taxonomies['post_format'] );
            */
    
        foreach ( $wp_taxonomies as $tax => $data )
        {
            // Only deal with _builtin taxonomies
            if ( $data->_builtin === true )
            {
                // Print out them name if it's builtin; check
                # print_r( $tax ); 
    
                // Now let's unset "category"
                if ( $tax == 'category')
                {
                    // Check to be sure if we're dealing with the right one
                    # print_r( $tax );
                    unset( $wp_taxonomies[$tax] );
                }
            }
        }
        // double check after wards: have we been successful?
        # print_r($wp_taxonomies);
        echo '</pre>';
    }
    add_action( 'init', 'unregister_taxonomy' );
    
    function check_unset_category() {
        // Now let's check inside our viewport (after footer) if we real got rid of the taxonomy
        echo '<pre>';
            print_r( $GLOBALS['wp_taxonomies'] );
        echo '</pre>';
    }
    add_action( 'wp_footer', 'check_unset_category', 999 );
    
    • 0

Оставить ответ

You must login to add an answer.