2013-03-02 39 views
0

如果您在wordpress中使用searchform.php來顯示搜索輸入框。如何在同一頁面的不同搜索框中顯示不同的佔位符?例如,我有一個頁面,在頁腳中的側邊欄和主導航菜單中有一個搜索框。我希望每個人都展示不同的佔位符。在同一頁面上爲搜索輸入使用不同的佔位符 - wordpress

這是我在searchform

<!-- Searchform --> 
<form method="get" class="search" action="<?php echo home_url(); ?>" > 
    <input id="s" placeholder="Search..." type="text" name="s" onfocus="if (this.value==this.defaultValue) this.value = '';" 
    onblur="if (this.value=='') this.value = this.defaultValue" > 
    <input class="searchsubmit" type="submit" value="<?php _e('', 'mytheme'); ?>"> 
</form> 
<!-- /Searchform --> 

回答

0

已經得到了我真的不知道你正在嘗試做的,但總的想法是很簡單。只要有條件地創建佔位符文本。

if (is_home()) { 
    $placeholder = "Search Posts..."; 
} elseif(is_tag()) { 
    $placeholder = "Search Tags..."; 
} else { 
    $placeholder = "Search..."; 
} 

<!-- Searchform --> 
<form method="get" class="search" action="<?php echo home_url(); ?>" > 
    <input id="s" placeholder="<?php echo $placeholder; ?>" type="text" name="s" onfocus="if (this.value==this.defaultValue) this.value = '';" 

這就像是你在找什麼?

根據要求

搜索表單功能是不是真的意味着工作像你需要一些進一步的解釋。你可以用全局變量作弊。

$GLOBALS['placeholder'] = "Default placeholder value"; 

functions.php然後編輯表單閱讀...

<!-- Searchform --> 
<form method="get" class="search" action="<?php echo home_url(); ?>" > 
    <input id="s" placeholder="<?php echo $GLOBALS['placeholder']; ?>" type="text" name="s" onfocus="if (this.value==this.defaultValue) this.value = '';" 

並調用的功能等:

$GLOBALS['placeholder'] = "Placeholder value..."; 
get_search_form(); 

根據該文檔,get_search_form(false)應返回一個字符串,這意味着這樣的事情應該工作:

編輯搜索表單閱讀:

<!-- Searchform --> 
<form method="get" class="search" action="<?php echo home_url(); ?>" > 
    <input id="s" placeholder="%s" type="text" name="s" onfocus="if (this.value==this.defaultValue) this.value = '';" 

然後用...

$search_form = get_search_form(false); 
printf($search_form,'Placeholder...'); 

這避免了全局,這通常是一件好事。我不能那個開箱即用。如果你看看源代碼,那功能似乎取決於是否存在searchform.php。如果該文件存在,它只是簡單的包含在內,這使得「返回字符串」部分非常危險。使用可用過濾器劫持已證明令人驚訝的困難。

爲了避免global雜耍,我想你會需要更換`get_search_form」,例如,有:

function my_get_searchform($placeholder = 'Search') { 
    $search_form_template = locate_template('searchform.php'); 
    if ('' != $search_form_template) { 
    ob_start(); 
    require($search_form_template); 
    $form = ob_get_clean(); 
    printf($form,$placeholder); 
    } 
} 
+0

不完全,我有一個頁面,在不同的位置有3個搜索框。其中一個很小,所以我不希望它有一個佔位符。它應該是更多的地方,如果聲明,但我不確定如何做到這一點。例如:如果搜索在#主菜單中,則不顯示佔位符 – user1202292 2013-03-02 16:15:56

0

的get_search_form()函數打印出從searchform.php代碼。不要在頁面中使用get_search_form(),取出該函數並從searchform.php複製代碼並將其粘貼到希望顯示搜索欄的位置。然後相應地更改佔位符文本。

<html> 
    <head> 
     <!-- Header Stuff --> 
    </head> 
    <body> 
     <div class="main-navigation-menu"> 
      <!-- Searchform --> 
      <form method="get" class="search" action="<?php echo home_url(); ?>" > 
       <input id="s" placeholder="PLACEHOLDER TEXT HERE" type="text" name="s" onfocus="if (this.value==this.defaultValue) this.value = '';" 
       onblur="if (this.value=='') this.value = this.defaultValue" > 
       <input class="searchsubmit" type="submit" value="<?php _e('', 'mytheme'); ?>"> 
      </form> 
      <!-- /Searchform --> 
     </div> 
     <div class="sidebar"> 
      <div class="widget"> 
       <!-- Default widget stuff from functions.php will appear here. Searchform styling will come from searchform.php --> 
      </div> 
     </div> 
     <div class="footer"> 
      <!-- Searchform --> 
      <form method="get" class="search" action="<?php echo home_url(); ?>" > 
       <input id="s" placeholder="PLACEHOLDER TEXT HERE" type="text" name="s" onfocus="if (this.value==this.defaultValue) this.value = '';" 
       onblur="if (this.value=='') this.value = this.defaultValue" > 
       <input class="searchsubmit" type="submit" value="<?php _e('', 'mytheme'); ?>"> 
      </form> 
      <!-- /Searchform --> 
     </div> 
    </body> 
</html> 

保留searchform.php和樣式文件,表明您希望您的窗口小部件搜索窗體顯示。

相關問題