- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想通过在搜索输入中添加 autocomplete="off"
来稍微改变一下我的搜索表单。
我最初寻找的是如下所示的简单过滤器:
//* 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
从parent theme folder复制到child theme folder文件夹下。
文件原代码如下:
<?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 );
}
它目前在主页上运行良好,但在任何其他页面上只生成标题和标语。我可以直接编辑父主题文件,但想要一个替代方案来避免搞砸一切。有任何见解或建议吗?
Documentation for get_search_form
最佳答案
我看到 genesis_search_form
函数最后应用了 genesis_search_form
过滤器。无需重新编写整个 genesis_search_form
函数,您可以使用它来操作表单并在新过滤器中使用 DOMDocument
来添加 autocomplete
你想要的属性。在您的子主题 functions.php
中尝试以下代码,看看它是否有效:
add_filter( 'genesis_search_form', 'my_search_form_filter', 5 );
function my_search_form_filter($form) {
$document = new DOMDocument();
$document->loadHTML($form);
$xpath = new DOMXPath($document);
$input = $xpath->query('//input[@name="s"]');
if ($input->length > 0) {
$input->item(0)->setAttribute('autocomplete', 'off');
}
# remove <!DOCTYPE
$document->removeChild($document->doctype);
# remove <html><body></body></html>
$document->replaceChild($document->firstChild->firstChild->firstChild, $document->firstChild);
$form_html = $document->saveHTML();
return $form_html;
}
不要忘记禁用禁用默认 get_search_form
过滤器并添加您的过滤器的代码。
编辑
之前的代码是错误的,请更新为最新的上面有效的代码。我已经使用 genesis
和 genesis-child
主题对其进行了测试。
在这里你可以找到我的 Dev Wordpress安装了 genesis
主题的站点,您可以检查搜索输入框,看到它的 autocomplete
属性设置为 off
:http://wp.dev.lytrax.net/
下面是一个屏幕截图,显示具有 autocomplete
属性的表单搜索输入元素:
编辑 2
genesis-sample
主题,使用 HTML5 搜索表单,它在 createDocumentFragment
元素可以处理的代码中包含一些 meta
标签appendXML
,因此它会抛出许多警告并且无法继续。您看不到那些 PHP 警告,因为很可能您已禁用它们。请尝试我更新的代码。将其添加到 genesis-sample/functions.php
文件的末尾,并检查它是否添加了 autocomplete
属性。
关于php - 自定义 Wordpress 搜索表单模板 (Genesis),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42672447/
是否有可能在 Genesis 子主题中实现自定义帖子类型的分页,我使用的是 Genesis:2.0.2,Wordpress 版本是:4.0。 我已经在我的模板中尝试了以下代码,但它对我不起作用。 而
我正在使用“Pretty Young Thing Child Theme”——一个由 Studiopress 为他们的 WordPress Genesis 框架开发的 child 主题。尽管转到“常规
我只是潜入Genesis Framework。 在普通主题中,如果您想编辑标题,您可以打开 header.php文件。 但是在创世纪中,头文件不在子主题中。我环顾四周,找到了一种添加自定义 heade
我目前正在使用 Genesys GVP 8.1.5 框架开发大型 VoiceXML IVR 应用程序。我已经成功构建、测试和部署了两个较小的应用程序,没有任何问题。但是,在大型应用程序上进行测试需要很
我在 Wordpress 的 Genesis 框架上运行 Bootstrap。我有一个顶级导航栏,我想将其从黑色更改为白色。这最初是 Bootstrap,但当我将网站放到 Wordpress 上时,我
我确定有一个简单的修复方法,但我想不出来:-(我正在测试网站上工作 http://www.mypinkluggage.net ,我想将菜单字体颜色从绿色更改为奶油色。我不知道如何覆盖颜色..这是所有菜
我正在使用适用于 WordPress 的 Genesis 框架构建网站。 我只想要一个简单的全宽响应式分层横幅,但在 Genesis 中,它总是被强制放入容器 div 中,这显然不是全宽的。 分层也很
我正在使用 Genesis 示例子主题。我有一些问题。这可能是我错过的非常简单的事情。我使用了红色边框,这样我就可以看到主导航的位置。 主导航似乎没有显示,我在 functions.php 文件中将主
我有一个 WordPress Genesis 主题的小部件主页 - Outreach Pro。 我在第一行的两个“关于”小部件区域(第二和第三)与第二行的第三个( friend )和第四个(捐赠)小部
我正在这个网站上工作:http://www.livingthelighterlife.com/ 如果滚动到页脚所在的底部,您将看到两个小部件:“非常感谢您的光临”和“精选帖子和食谱”——后者以黑色显示
几天来,我一直在尝试为该网站更正我的 CSS 中的一个错误。除了页脚区域,一切都很好。它在桌面上看起来不错,但一旦在小屏幕上看到,页脚区域就没有响应,背景颜色消失并且变得非常困惑。如果有人可以帮助我,
我试图理解为什么在我的子主题文件夹中编辑样式表时,版本号被添加到我的 style.css 的末尾,如 style.css?ver=1.9.2我没有在页面上看到这些更改更新。 有人可以解释为什么要将版本
请看x网站的置顶贴。当您单击关闭按钮时,页面会转到顶部,向下滚动时粘性消息会返回。知道如何解决这个问题吗?我在 functions.php 和必要的 javascript/CSS 中添加了下面的脚本。
我的侧边栏区域已移至页面左侧 - 如何将其放回右侧? 参见 - https://www.moneynest.co.uk/how-to-increase-your-income-fast/ ID = g
我正在尝试显示通过搜索找到的帖子数。 我找到了这段代码 $wp_query->found_posts 但似乎无法让它工作,有什么建议吗? %s %s %s', $wp_query->found_po
我遇到了与 https://ethereum.stackexchange.com/questions/7707/is-it-possible-to-preload-contracts-in-the-g
如何从 Genesis WordPress 网站上的面包屑路径中删除当前页面?我从头到尾检查了 breadcrumb.php,但不确定应该连接哪个过滤器。 谢谢! 最佳答案 Bill Erickson
我的目标是向我的 Genesis 子主题添加一个全尺寸背景图片,该主题在主页上循环显示四到五个图片,并且是与每个后续页面(或其子页面)相对应的静态图片。 您可以在此处查看进度:http://devel
我刚开始使用 Wordpress,建议使用子主题,所以我购买了 Magazine Pro 主题。这已经为我的需要提供了完美的布局,但我发现一些填充过于密集,特别是当我在顶部有一个排行榜横幅时,我的博客
我试图让 Genesis 响应式 slider 中的图像居中,但到目前为止我失败得很惨。我在我的主页上创建了一个小部件区域并使用以下命令对其进行了初始化: function tx_slider_gen
我是一名优秀的程序员,十分优秀!