我有一個網站,檢測用戶的位置,並只顯示具有匹配城市分類的職位。如果沒有匹配,用戶將被重定向到一個頁面以選擇可用的城市。這是我的函數:如何將變量傳遞給函數function.php(Wordpress站點)
function my_location($q){
if (!$q->is_main_query())
return;
if ($q->is_search())
return;
if ($q->is_archive()){
if (! is_admin()) {
if ($userSlug!='Set'){
$userInfo = geoip_detect_get_info_from_current_ip();
switch ($userInfo->postal_code){
case '86403':
case '86404':
case '86405':
case '86406':
$city="lake-havasu-city";
break;
case '86401':
case '86402':
case '86409':
$city="kingman";
break;
case '86429':
case '86430':
case '86439':
case '86442':
$city="bullhead-city";
break;
default:
force_post_city($city);
exit;
}
$q->set('tax_query', array(array('taxonomy' => 'pa_city','field' => 'slug',terms' => array($city),'operator' => 'IN')));
}}
}
}
add_action('pre_get_posts', 'my_location');
我的問題是,用戶選擇城市的頁面上,我該如何通過城市回到這個功能,因此,他們將拉動相應的城市?這是我的形式:
<form method="post" action="new_location($term_taxonomy)">
<?php
function get_terms_dropdown($taxonomies, $args){
$myterms = get_terms($taxonomies, $args);
$optionname = "optionname";
$emptyvalue = "";
$output ="<select name='".$optionname."'><option selected='".$selected."' value='".$emptyvalue."'>Select a City</option>'";
foreach($myterms as $term){
$term_taxonomy=$term->pa_city; //CHANGE ME
$term_slug=$term->slug;
$term_name =$term->name;
$link = $term_slug;
$output .="<option name='".$link."' value='".$link."'>".$term_name."</option>";
}
$output .="</select>";
return $output;
}
$taxonomies = array('pa_city'); // CHANGE ME
$args = array('order'=>'ASC','hide_empty'=>true);
echo get_terms_dropdown($taxonomies, $args);
?>
<input type="submit" value="click" name="submit">
</form>
任何幫助將不勝感激!
我對WP的這種程度的細節並不熟悉,但是:你有沒有爲你的城市形態工作的「行動」目標?如果是這樣,當用戶提交時,你能設置一個會話變量嗎?因此,當該網站試圖通過分類法顯示其帖子時,它可以嘗試檢測城市,首先通過地理/ IP檢測,然後通過會話。事實上,我會在會話中緩存geo/IP檢測 - 您不希望爲每個頁面視圖進行冗餘HTTP調用。 – halfer
謝謝!你指出我正確的方向。 –