簡體   English   中英

在 wordpress 中包含模板時,如何將 get_query_var 用於多個 url

[英]How do I use get_query_var for multiple urls when including template in wordpress

我在下面使用 function 將特定的 url 重定向到特定的 php 腳本文件:

add_action('wp', function() {
if ( trim(parse_url(add_query_arg(array()), PHP_URL_PATH), '/') === 'pagename' ) {
include(locate_template('give_some.php'));
exit();
}});

它僅適用於指定的 url,我想讓它適用於多個網址。 假設一個文件 urls.txt 包含數字 url 並且必須觸發上面的代碼。 知道怎么做嗎?

我是 WordPress 的長期開發人員,對 WordPress 問題的最佳回應之一是“這不是 WordPress 問題,只是簡單的 PHP(或 JavaScript)”。 這是一件非常好的事情,因為它讓談論變得非常容易。

據我了解,您的問題是您想將當前 URL 與可能路徑的“文件”進行比較。 你有 WordPress 相當於“當前 URL”,所以我認為這是理所當然的,我還假設你可以獲取一個文件並將其轉換為一個數組。 但是一旦你這樣做了,你就在解析一個 URL(你已經做了)並查看它是否在數組中:

$url = 'https://www.example.com/pagename?a=b&c=d';

$paths = [
    'gerp',
    'pagename',
    'cheese',
];


$path = trim(parse_url($url, PHP_URL_PATH), '/');
if ( in_array($path, $paths )) {
    echo 'yes';
} else {
    echo 'no';
}

演示: https://3v4l.org/NOmpk

您可以使用不同的掛鈎request 這允許你操縱請求。

add_filter( 'request', function( $request ){});

我的簡單示例(未測試)。

add_filter( 'request', function( $request ){
        $data = file_get_contents("database.txt"); //read the file
        $rows = explode("\n", $data); //create array separate by new line
        $rows = array_map("trim", $rows); // for removing any unwanted space
        $rowCount = count($rows); // Count your database rows

        for ($i=0; $i < $rows ; $i++) {
            if( isset( $request['pagename'] ) && $rows[$i] == $request['pagename'] ){
              include(locate_template('give_some.php'));
            }
        }

    return $request;
});

我的建議是,不要使用.txt 文件,將數據保存到數據庫中,然后使用它,或者創建wp_option字段,並從設置頁面進行管理。

暫無
暫無

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

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