我想通過將autocomplete="off"
添加到搜索輸入中來改變我的搜索表單。定製Wordpress搜索表單模板(Genesis)
我最初找像下面這樣的簡單的過濾器:
//* Customize search form input box text
add_filter('genesis_search_text', 'sp_search_text');
function sp_search_text($text) {
return esc_attr('Search my blog...');
}
但由於/genesis/lib/structure/search.php
沒有任何變量一樣autocomplete="%s"
,該屬性不能有針對性的。我可能不得不直接介紹它,所以我將search.php
從父主題文件夾複製到子主題文件夾。
文件的原代碼如下:
<?php
/**
* Replace the default search form with a Genesis-specific form.
*
* The exact output depends on whether the child theme supports HTML5 or not.
*
* Applies the `genesis_search_text`, `genesis_search_button_text`, `genesis_search_form_label` and
* `genesis_search_form` filters.
*
* @since 0.2.0
*
* @return string HTML markup for search form.
*/
add_filter('get_search_form', 'genesis_search_form');
function genesis_search_form() {
$search_text = get_search_query() ? apply_filters('the_search_query', get_search_query()) : apply_filters('genesis_search_text', __('Search this website', 'genesis') . ' …');
$button_text = apply_filters('genesis_search_button_text', esc_attr__('Search', 'genesis'));
$onfocus = "if ('" . esc_js($search_text) . "' === this.value) {this.value = '';}";
$onblur = "if ('' === this.value) {this.value = '" . esc_js($search_text) . "';}";
// Empty label, by default. Filterable.
$label = apply_filters('genesis_search_form_label', '');
$value_or_placeholder = (get_search_query() == '') ? 'placeholder' : 'value';
if (genesis_html5()) {
$form = sprintf('<form %s>', genesis_attr('search-form'));
if (genesis_a11y('search-form')) {
if ('' == $label) {
$label = apply_filters('genesis_search_text', __('Search this website', 'genesis'));
}
$form_id = uniqid('searchform-');
$form .= sprintf(
'<meta itemprop="target" content="%s"/><label class="search-form-label screen-reader-text" for="%s">%s</label><input itemprop="query-input" type="search" name="s" id="%s" %s="%s" /><input type="submit" value="%s" /></form>',
home_url('/?s={s}'),
esc_attr($form_id),
esc_html($label),
esc_attr($form_id),
$value_or_placeholder,
esc_attr($search_text),
esc_attr($button_text)
);
} else {
$form .= sprintf(
'%s<meta itemprop="target" content="%s"/><input itemprop="query-input" type="search" name="s" %s="%s" /><input type="submit" value="%s" /></form>',
esc_html($label),
home_url('/?s={s}'),
$value_or_placeholder,
esc_attr($search_text),
esc_attr($button_text)
);
}
} else {
$form = sprintf(
'<form method="get" class="searchform search-form" action="%s" role="search" >%s<input type="text" value="%s" name="s" class="s search-input" onfocus="%s" onblur="%s" /><input type="submit" class="searchsubmit search-submit" value="%s" /></form>',
home_url('/'),
esc_html($label),
esc_attr($search_text),
esc_attr($onfocus),
esc_attr($onblur),
esc_attr($button_text)
);
}
return apply_filters('genesis_search_form', $form, $search_text, $button_text, $label);
}
然後我刪除了原來的過濾器,並加入我的過濾器:
remove_filter('get_search_form', 'genesis_search_form');
add_filter('get_search_form', 'my_search_form');
並補充autocomplete="off"
到搜索輸入,所以目前是:
<?php
/**
* Replace the default search form with a Genesis-specific form.
*
* The exact output depends on whether the child theme supports HTML5 or not.
*
* Applies the `genesis_search_text`, `genesis_search_button_text`, `genesis_search_form_label` and
* `genesis_search_form` filters.
*
* @since 0.2.0
*
* @return string HTML markup for search form.
*/
remove_filter('get_search_form', 'genesis_search_form');
add_filter('get_search_form', 'my_search_form');
function my_search_form() {
$search_text = get_search_query() ? apply_filters('the_search_query', get_search_query()) : apply_filters('genesis_search_text', __('Search this website', 'genesis') . ' …');
$button_text = apply_filters('genesis_search_button_text', esc_attr__('Search', 'genesis'));
$onfocus = "if ('" . esc_js($search_text) . "' === this.value) {this.value = '';}";
$onblur = "if ('' === this.value) {this.value = '" . esc_js($search_text) . "';}";
// Empty label, by default. Filterable.
$label = apply_filters('genesis_search_form_label', '');
$value_or_placeholder = (get_search_query() == '') ? 'placeholder' : 'value';
if (genesis_html5()) {
$form = sprintf('<form %s>', genesis_attr('search-form'));
if (genesis_a11y('search-form')) {
if ('' == $label) {
$label = apply_filters('genesis_search_text', __('Search this website', 'genesis'));
}
$form_id = uniqid('searchform-');
$form .= sprintf(
'<meta itemprop="target" content="%s"/><label class="search-form-label screen-reader-text" for="%s">%s</label><input itemprop="query-input" type="search" name="s" id="%s" %s="%s" autocomplete="off" spellcheck="false" autocorrect="off" autocapitalize="off" dir="auto" /><input type="submit" value="%s" /></form>',
home_url('/?s={s}'),
esc_attr($form_id),
esc_html($label),
esc_attr($form_id),
$value_or_placeholder,
esc_attr($search_text),
esc_attr($button_text)
);
} else {
$form .= sprintf(
'%s<meta itemprop="target" content="%s"/><input itemprop="query-input" type="search" name="s" %s="%s" autocomplete="off" spellcheck="false" autocorrect="off" autocapitalize="off" dir="auto" /><input type="submit" value="%s" /></form>',
esc_html($label),
home_url('/?s={s}'),
$value_or_placeholder,
esc_attr($search_text),
esc_attr($button_text)
);
}
} else {
$form = sprintf(
'<form method="get" class="searchform search-form" action="%s" role="search" >%s<input type="text" value="%s" name="s" class="s search-input" onfocus="%s" onblur="%s" autocomplete="off" spellcheck="false" autocorrect="off" autocapitalize="off" dir="auto" /><input type="submit" class="searchsubmit search-submit" value="%s" /></form>',
home_url('/'),
esc_html($label),
esc_attr($search_text),
esc_attr($onfocus),
esc_attr($onblur),
esc_attr($button_text)
);
}
return apply_filters('my_search_form', $form, $search_text, $button_text, $label);
}
它目前在主頁上工作完美,bu t在任何其他頁面中只生成標題和標語。我可以直接編輯父主題文件,但希望有一種方法可以避免搞砸一切。任何見解或建議?
Documentation for get_search_form
Documentation for genesis_search_form
Documentation for Genesis Snippets
你在哪裏my_search_form()函數? – questlooking
在searchform.php中,我刪除了原始'genesis_search_form()'過濾器,並用'my_search_form()'替換了'genesis_search_form()'的所有實例,並將'autocomplete =「off」'添加到代碼中。錯誤是錯誤500,其中整個或部分頁面顯示爲白色,似乎代碼無法在其原始位置外正常運行,但我希望有一種替代方法可以避免直接編輯父主題框架。 – SilverLink
什麼是刪除原來的共鳴......只要你打電話給你的形式,而不是起源,應該沒有理由會影響你的新形式。 –