Two sets of url one content?

时间:2018-08-14 作者:Run

如何配置两组实际使用相同内容的URL?

例如:

(第1组)

samplesite.com
samplesite.com/about/
samplesite.com/contact/
samplesite.com/projects/
(第2组)

samplesite.com/fr/
samplesite.com/fr/about/
samplesite.com/fr/contact/
samplesite.com/fr/projects/
然后在我的模板中,我想检查请求是否fr 或者没有。

如果没有任何插件,这是可能的吗?

2 个回复
最合适的回答,由SO网友:Run 整理而成

我的答案在Sally CJ的帮助下question:

/**
 * Add new rewrite rule
 */
function create_new_url_querystring() {
    // https://wordpress.stackexchange.com/questions/60173/rewrite-rule-for-multilingual-website-like-qtranslate
    add_rewrite_rule(
        \'^fr/?$\',
        \'index.php?&page_id=2&lang=fr\',
        \'top\'
    );

    add_rewrite_rule(
        \'^fr/(.?.+?)(?:/([0-9]+))?/?$\',
        \'index.php?pagename=$matches[1]&page=$matches[2]\',
        \'top\'
    );

    add_rewrite_rule(
        \'fr/project/(.+?)(?:/([0-9]+))?/?$\',
        \'index.php?project=$matches[1]&page=$matches[2]\',
        \'top\'
    );

    // flush_rewrite_rules();
    global $wp_rewrite;
    $wp_rewrite->flush_rules();
}
add_action(\'init\', \'create_new_url_querystring\');

/**
 * Usage: get_query_var(\'lang\');
 */
function query_vars($query_vars) {
    $query_vars[] = "lang";
    return $query_vars;
}
add_filter(\'query_vars\', \'query_vars\');

/**
 * Cancel canonical redirect on home page.
 * https://wordpress.stackexchange.com/questions/311476/add-rewrite-rule-to-call-front-page-php
 */
add_action(\'template_redirect\', function() {
    if (is_front_page()) {
        remove_action(\'template_redirect\', \'redirect_canonical\');
    }
}, 0);

SO网友:Serkan Algur

您可以创建custom post type 管理次要内容(我想是多语言的),并设置这些/fr/ 您的CPT重写库。

创建CPT函数将其添加到函数中。

$rewrite = array(
    \'slug\'                  => \'fr\',
    \'with_front\'            => false,
    \'pages\'                 => true,
    \'feeds\'                 => true,
);
之后设置CPTrewrite 选项到rewrite => $rewrite. 不在相同的内容上,但可以轻松解决您的问题。

二级内容的CPT代码示例;

    function secondary_content_french_post_type() {

    $labels = array(
        \'name\'                  => _x( \'French\', \'Post Type General Name\', \'text_domain\' ),
        \'singular_name\'         => _x( \'French\', \'Post Type Singular Name\', \'text_domain\' ),
        \'menu_name\'             => __( \'French\', \'text_domain\' ),
        \'name_admin_bar\'        => __( \'French\', \'text_domain\' ),
        \'archives\'              => __( \'Item Archives\', \'text_domain\' ),
        \'attributes\'            => __( \'Item Attributes\', \'text_domain\' ),
        \'parent_item_colon\'     => __( \'Parent Item:\', \'text_domain\' ),
        \'all_items\'             => __( \'All Items\', \'text_domain\' ),
        \'add_new_item\'          => __( \'Add New Item\', \'text_domain\' ),
        \'add_new\'               => __( \'Add New\', \'text_domain\' ),
        \'new_item\'              => __( \'New Item\', \'text_domain\' ),
        \'edit_item\'             => __( \'Edit Item\', \'text_domain\' ),
        \'update_item\'           => __( \'Update Item\', \'text_domain\' ),
        \'view_item\'             => __( \'View Item\', \'text_domain\' ),
        \'view_items\'            => __( \'View Items\', \'text_domain\' ),
        \'search_items\'          => __( \'Search Item\', \'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\' ),
    );
//This is Rewrite Code
    $rewrite = array(
        \'slug\'                  => \'fr\',
        \'with_front\'            => false,
        \'pages\'                 => true,
        \'feeds\'                 => true,
    );
//This is Rewrite Code
    $args = array(
        \'label\'                 => __( \'French\', \'text_domain\' ),
        \'description\'           => __( \'French\', \'text_domain\' ),
        \'labels\'                => $labels,
        \'supports\'              => array( \'title\', \'editor\', \'custom-fields\',\'comments\',\'thumbnail\' ),
        \'taxonomies\'            => array( \'category\' ),
        \'hierarchical\'          => false,
        \'public\'                => true,
        \'show_ui\'               => true,
        \'show_in_menu\'          => true,
        \'menu_position\'         => 10,
        \'menu_icon\'             => \'dashicons-nametag\',
        \'show_in_admin_bar\'     => true,
        \'show_in_nav_menus\'     => false,
        \'can_export\'            => true,
        \'exclude_from_search\'   => false,
        \'publicly_queryable\'    => true,
        \'rewrite\'               => $rewrite,
        \'capability_type\'       => \'post\',
        \'show_in_rest\'          => false,
    );
    register_post_type( \'french\', $args );

}
add_action( \'init\', \'secondary_content_french_post_type\', 0 );

结束

相关推荐

WordPress Custom URLs

根据maioman发布的链接,我对以下问题进行了修改:我很难使用自定义的帖子类型/分类法。我想要一个自定义的帖子类型的剧集,并且自定义帖子类型的分类是包含用户生成的术语的剧集。我能够剧集/自定义术语名称/工作。如果你转到这里,它会显示与此术语相关的所有帖子。然而,如果你在剧集/自定义术语名称/帖子标题上看到一篇帖子,我会看到404页。function episodes() { $labels = array( \'name\' => _