簡體   English   中英

Wordpress 重寫規則、端點並顯示適當的模板

[英]Wordpress rewrite rules, endpoints and showing appropriate template

我接到了一項任務,要求我創建一個新的端點/永久鏈接。

類似於www.myswebsite.com/users ,其中將顯示用戶列表。 然后www.mywebsite.com/users/1將顯示用戶 1 的信息。

如果完成了那部分。 我設置了 url,訪問 url 會為用戶提供適當的模板。 個人信息按預期顯示。

但是...我犯了一個錯誤,因為users.php模板正在顯示所有其他 url。 所以基本網址www.mywebsite.com也顯示了www.mywebsite.com/users模板。 我怎樣才能解決這個問題?

下面是我的插件中的代碼。 如果您需要我提供更多信息,請隨時詢問。

我知道我的問題出在get_new_template函數上,但我不太熟悉 Wordpress 來確定正確的if/else塊。

<?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');

您告訴 WP 對此處的所有內容使用相同的模板,並且您沒有為與您的案例匹配的其他頁面返回原始模板。 請參閱下面的代碼進行修復:

// 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');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM