首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wordpress重写规则、端点并显示适当的模板

Wordpress重写规则、端点并显示适当的模板
EN

Stack Overflow用户
提问于 2020-04-02 20:59:47
回答 1查看 135关注 0票数 0

我接到了一项任务,要求我创建一个新的端点/固定链接。

类似于www.myswebsite.com/users,其中将显示用户列表。然后www.mywebsite.com/users/1将显示用户1的信息。

这部分已经完成了。我已经设置了网址,访问网址为用户提供适当的模板。各个信息按预期方式显示。

然而..。我犯了一个错误,因为所有其他urls都显示了users.php模板。所以基本url www.mywebsite.com也显示了www.mywebsite.com/users模板。我该如何解决这个问题呢?

下面是我插件中的代码。如果你需要我的更多信息,请不要犹豫,尽管问。

我知道我的问题出在get_new_template函数上,但我不太精通Wordpress来确定正确的if/else块。

代码语言:javascript
复制
<?php
/*
* Plugin Name: User Endpoint
* Description: Providing An Endpoint For Data Consumption
* Version: 1.0.0
*/

// Add a new var to query vars
function result_add_query_vars( $vars ){
    $vars[] = 'users';
    return $vars;
}
add_filter( 'query_vars', 'result_add_query_vars' );

// Register ReWrite-Rules
function myplugin_rewrite_tag_rule() {
    add_rewrite_endpoint( 'users', EP_ROOT );

    add_rewrite_rule(
        '^users/([^/]*)/?',
        'index.php?pagename=$matches[1]&param=foo',
        'top'
    );
}
add_action('init', 'myplugin_rewrite_tag_rule', 10, 0);

// Register Template To Show At End POint
function get_new_template( $original_template ) {
  if ( get_query_var('users/') ) {
        return dirname(__FILE__) . '/user.php';
    }   else {
        return dirname(__FILE__) . '/users.php';
    }
}
add_filter( 'template_include', 'get_new_template' );

// Flush Permalinks
function flush_permalinks() {
    flush_rewrite_rules();
}

register_activation_hook(__FILE__, 'flush_permalinks');
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-02 22:15:20

您正在告诉WP在这里使用相同的模板,并且您没有为与您的情况匹配的其他页面返回原始模板。请参阅下面的代码进行修复:

代码语言:javascript
复制
// Register Template To Show At End Point
function get_new_template($original_template)
{
    global $wp_query;

    // /users or /users/xxxx
    if (isset($wp_query->query['users'])) {
        // "user id"
        $page = $wp_query->query['users'];

        $template = $page >= 1 ? '/user.php' : '/users.php';

        return dirname(__FILE__) .  $template;
    }

    return $original_template;
}
add_filter('template_include', 'get_new_template');
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60992175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档