0

我正在将一个站点转移到 wordpress 中,并且我正在尝试将主模板中列表/菜单的 urlencode 的 id 发送到标题模板中的 $_GET 超全局。尽管 urlencode 正在工作,但使用 $_GET 超全局函数的函数似乎没有返回值。

这是调用函数以处理来自 urlencode 的 id 值的部分。

if (isset($_GET['opt'])) {
$sel_state = get_state_by_id($_GET['opt']);
} else {
$sel_state = NULL;
} 

这是functions.php 中的函数,它应该返回一个分配给$sel_state 的变量,这样我就可以在主模板页面的行中显示值。

function get_state_by_id($state_id) 
{
    global $wpdb;
    $sel_state_row = $wpdb->get_row( "SELECT * 
FROM $wpdb->state_menu_list WHERE id = " . $state_id 
. " LIMIT 1" );
    return $sel_state_row;  
}

这是将 $sel_state 变量分配给将在主模板页面上显示的变量的部分的开头。

global $sel_state;          
$main_gov_page_url = $sel_state->main_gov_page_url;
// ...the other values in the row.

有没有办法在没有插件的情况下使用 query_vars 之类的东西来完成这项工作?如果我需要一个插件来做到这一点,有人能指出我正确的方向吗?

4

1 回答 1

0

我认为你需要对代码进行相当大的更改,你必须在 function.php 文件中添加过滤器,然后你可以调用你在 function.php 中添加的函数

在function.php中,

function get_state_by_id_function($state_id) 
{
    global $wpdb;
    $sel_state_row = $wpdb->get_row( "SELECT * 
FROM $wpdb->state_menu_list WHERE id = " . $state_id 
. " LIMIT 1" );
    return $sel_state_row;  
}
add_filter( 'get_state_by_id', 'get_state_by_id_function');

现在你必须get_state_by_id在你想要的地方打电话,在你的情况下:

if (isset($_GET['opt'])) {
$sel_state = get_state_by_id($_GET['opt']);
} else {
$sel_state = NULL;
}

谢谢

于 2013-10-31T04:45:25.193 回答