eddyr
  • 0
Новичок

Добавление дополнительных страниц к авторским страницам

  • 0

На данный момент у меня есть следующий код для изменения слага author_base.

/** ADD REWRITE RULES **/
function change_author_permalinks() {
   global $wp_rewrite;

   $wp_rewrite->author_base = 'profile';
   $wp_rewrite->flush_rules();
}
add_action('init','change_author_permalinks');

Как я могу добавить, например, дополнительную страницу «редактирования» к этому, то есть /profile/my-user-name/edit ???

Share
  1. Правила авторской перезаписи фильтруются черезauthor_rewrite_rules . Вы можете добавить туда правило для шаблона author/([^/]+)/edit/?$, но подстановка будет зависеть от того, как вы хотите создать edit страницу. Простой пример, который установит пользовательскую переменную запроса и загрузит определенный шаблон, если эта переменная установлена:

    add_action( 'author_rewrite_rules', 'wpse18547_author_rewrite_rules' );
    function wpse18547_author_rewrite_rules( $author_rules )
    {
        $author_rules['author/([^/]+)/edit/?$'] = 'index.php?author_name=$matches[1]&wpse18547_author_edit=1';
        return $author_rules;
    }
    
    add_filter( 'query_vars', 'wpse18547_query_vars' );
    function wpse18547_query_vars( $query_vars )
    {
        $query_vars[] = 'wpse18547_author_edit';
        return $query_vars;
    }
    
    add_filter( 'author_template', 'wpse18547_author_template' );
    function wpse18547_author_template( $author_template )
    {
        if ( get_query_var( 'wpse18547_author_edit' ) ) {
            return locate_template( array( 'edit-author.php', $author_template ) );
        }
        return $author_template;
    }
    

    Небольшой совет: не звоните flush_rules() каждому init, это дорогая операция. Это нужно делать только при изменении правил перезаписи. Вы можете вручную сбросить правила, просто посетив страницу настроек постоянных ссылок. И если вы собираетесь играться с правилами перезаписи, рекомендую вам установить мой плагин Rewrite Analyzer.

    • 0

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

You must login to add an answer.