[英]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';
}
您可以使用不同的挂钩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.