Как программно изменить постоянные ссылки сообщений Wordpress по умолчанию? - PullRequest
0 голосов
/ 20 сентября 2018

В бэкэнде Wordpress я использую значение http://localhost/sitename/example-post/ по умолчанию для создания постоянных ссылок.

Для пользовательских типов записей я определил пользовательский слаг таким образом, вот services например:

register_post_type( 'service',
    array(
        'labels'      => array(
            'name'          => __( 'Services' ),
            'singular_name' => __( 'Service' )
        ),
        'public'      => true,
        'has_archive' => true,
        'rewrite'     => array(
            'slug'       => 'services',
            'with_front' => true
        ),
        'supports'    => array(
            'title',
            'editor',
            'excerpt',
            'thumbnail'
        ),
        'taxonomies'  => array( 'category' ),
    )
);

Создает services / post-name .

Я также использую этот хук, чтобы создать пользовательскую страницу для создания пользовательской постоянной ссылки:

function custom_base_rules() {
    global $wp_rewrite;

    $wp_rewrite->page_structure = $wp_rewrite->root . '/page/%pagename%/';
}

add_action( 'init', 'custom_base_rules' );

Создает page / post-name

Теперь единственное, что мне нужно сделать, - это создать еще один собственный постоянный путь для обычной Wordpress posts .

Таким образом, конечный мир будет для типа записей post:

post / post-name

Я не могу использовать резервные копии для этого, потому что я уже определил способ обработки постоянных ссылок по умолчанию.Мне уже удалось переписать пути пользовательских типов записей и страниц ...

Как программно переписать обычный постоянный путь post типа записей в Wordpress?

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Свойство permalink_structure, предложенное GentlemanMax, не работает для меня.Но я нашел метод, который работает, set_permalink_structure ().См. Пример кода ниже.

function custom_permalinks() {
    global $wp_rewrite;
    $wp_rewrite->page_structure = $wp_rewrite->root . '/page/%pagename%/'; // custom page permalinks
    $wp_rewrite->set_permalink_structure( $wp_rewrite->root . '/post/%postname%/' ); // custom post permalinks
}

add_action( 'init', 'custom_permalinks' );
0 голосов
/ 20 сентября 2018

Публикации должны использовать структуру постоянных ссылок по умолчанию, они не имеют специальной записи в объекте перезаписи так же, как страницы или пользовательские типы постов.Если вы хотите программно изменить структуру по умолчанию, вы можете добавить что-то вроде этого к своему хуку.

$wp_rewrite->permalink_structure = '/post/%postname%';

Я не совсем понимаю, что вы имеете в виду, когда говорите

Я не могу использовать резервную копию для этого, потому что я уже определил способ обработки постоянных ссылок по умолчанию.Мне уже удалось переписать пути пользовательских типов записей и страниц ...

Звучит так, как будто вы переопределяете поведение по умолчанию для постоянных ссылок везде, кроме сообщений, поэтому, если вы измените значение по умолчанию, это будетскорее всего, влияет только на сообщения.

...