目前,我有以下几点:
自定义模板:my\\u custom\\u template。php,其中调用下面的函数。
<?php $uni_data = get_uni_data() ?>
网页:www.website。使用自定义模板的com/my\\u页面
函数中的函数。php:
function get_uni_data() {
$segments = explode(\'/\', trim(parse_url($_SERVER[\'REQUEST_URI\'], PHP_URL_PATH), \'/\'));
$uni_data = [];
// for www.example.com/user/account you will get \'user\'
global $wpdb;
$uni_data = $wpdb->get_row("SELECT * FROM university_table WHERE name LIKE \'Clemson\'", ARRAY_A );
return $uni_data;
我想在url解析的结尾是什么之后更改查询语句值,即当有人访问www.website时。com/university/Clemson或www.website。com/大学/杜克
查询值为Clemson或Duke。
所以,我想添加一个规则,无论用户何时访问url:www.website。com/大学/名称
使用名称为查询值的get\\u uni\\u数据调用并填写模板。
我是否需要像上面的my\\u page这样的页面来处理此问题?或者我可以直接使用模板吗?重写规则只针对模板,而不考虑特定的页面,会是什么样子?
EDIT 1
我添加了以下功能(根据
similar question) 但该页面不存在。
add_action(\'init\', function() {
$url_path = trim(parse_url(add_query_arg(array()), PHP_URL_PATH), \'/\');
$templatename = \'university\';
$pos = strpos($url_path, $templatename);
if ( $pos != false) {
$load = locate_template(\'my_custom_template.php\', true);
return $load;
}
}) ;
EDIT 2
我现在就试试这个
question 在重写规则如下所示的位置回答:
add_rewrite_rule(
\'university/([^/]+)/?$\',
\'index.php?pagename=university&uniname=$matches[1],
\'top\'
);
查询栏是:
$query_vars[] = \'uniname\';
并将get\\u uni\\u data函数更改为具有一个参数(uniname),该参数将放在LIKE语句之后。
但我真的不明白add\\u action或add\\u filter是如何工作的,所以我不确定这些是否会工作。
EDIT 3
因此,我在函数中实现了以下内容。php文件:
add_action(\'init\', \'wp_university_full_rewrite\');
function wp_university_full_rewrite() {
add_rewrite_rule(
\'university/[^/]*)/?$\',
\'index.php?pagename=university&uni_name=$matches[1]\',
\'top\');
}
add_filter(\'query_vars\', \'wp_university_full_query_vars\');
function wp_university_full_query_vars( $query_vars ) {
$query_vars[] = \'uni_name\';
return $query_vars ;
}
function get_uni_data_with_query( $uni_name_query ) {
$uni_data = [];
global $wpdb;
$uni_data = $wpdb->get_row("SELECT * FROM university_table WHERE name LIKE ".$uni_name_query, ARRAY_A );
return $uni_data;
}
在我的模板中,我添加了:
<?php $uni_name_pull = get_query_var(\'uni_name\') ?>
<?php $uni_data = get_uni_data_with_query($uni_name_pull) ?>
但现在我得到以下错误:
Warning: preg_match(): Compilation failed: unmatched parentheses at offset 17 in /home4/ratemyp9/public_html/wp-includes/class-wp.php on line 224