搜索功能在移动设备上不起作用

时间:2021-11-01 作者:BlondesGift

简要介绍我:我在大学里做了一份学生工作,没有任何WordPress经验(但我的教授知道这一点)。我基本上维护我教授的网站。我的前任写了当前的主题,几乎没有评论。问题:搜索功能在移动设备上不起作用。我不知道为什么,也不知道这个问题存在了多久。我所能说的是,当我在桌面设备上搜索区块链时,例如([网站]/index.php?s=区块链&;m=),会向变量s发送一个字符串并显示它。在移动设备上,字符串被发送到变量M,很遗憾,M没有显示:[网站]/索引。php?s=&;m=区块链自由测试:https://norbert-pohlmann.com/

正如我所说,因为我接管了别人的工作,对WordPress一无所知,所以我不知道如何解决这个问题。不幸的是,我的前任在这一点上帮不了我。我还研究了标准主题《二十世纪二十年代》,老实说,我甚至没有能力理解那里的搜索是如何工作的。我很抱歉。

我可以从文件头显示搜索次数。php:

<div class="col-6 col-sm-6 col-md-6 col-lg-4 col-xl-4">

                <form class="row justify-content-end" method="get" id="searchform"
                      action="<?php echo $_SERVER[\'PHP_SELF\']; ?>">
                    <div class=" row justify-content-end pc suche">
                        <div class="col-lg-11 col-xl-11">
                            <table>
                                <tr>
                                    <td>
                                        <input class="form-control" placeholder="Suche" type="text"
                                               value="<?php echo esc_html($s, 1); ?>" name="s" id="s"/>
                                    </td>
                                    <td>
                                        <input class="btn btn-outline-search" type="submit" id="search_submit"
                                               value="Suchen"/>
                                    </td>
                                </tr>
                            </table>
                        </div>
                    </div>
                    <div class="justify-content-end mobile">
                        <div class="col-auto">
                
                         <table>
                                <tr>
                                    <td>
                                        <input class="form-control" placeholder="Suche" type="text"
                                               value="<?php echo esc_html($m, 1); ?>" name="m" id="m"/>
                                    </td>
                                    <td>
                                        <input class="btn btn-outline-search" type="submit" id="search_submit"
                                               value="Suche"/>
                                    </td>
                                </tr>
                            </table>
                            
                        </div>
                    </div>
              
                </form>
            </div>

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

在WordPress中name 对于搜索字段,必须为s. WordPress会自动对任何请求执行搜索,其中s 存在。

出于某种原因,您的主题有一个单独的搜索字段,名为m 显示在手机上。除非添加自定义代码来处理此问题,否则这不会起任何作用。但这不是必要的。

此外,两个字段都位于一个<form> 元素,这意味着每当提交表单时sm 已提交字段。这意味着在移动设备上,将基于桌面搜索字段执行搜索。

你需要两个分开<form> 元素,一个用于桌面,一个用于移动,每个元素都应该有自己的s 要素:

<div class="col-6 col-sm-6 col-md-6 col-lg-4 col-xl-4">
    <div class="row justify-content-end">
        <form class="row justify-content-end pc suche">
            <div class="col-lg-11 col-xl-11">
                <table>
                    <tr>
                        <td>
                            <input class="form-control" placeholder="Suche" type="text" value="<?php echo esc_attr($s); ?>" name="s" />
                        </td>
                        <td>
                            <input class="btn btn-outline-search" type="submit" id="search_submit" value="Suchen"/>
                        </td>
                    </tr>
                </table>
            </div>
        </form>
        <form class="justify-content-end mobile" method="get" action="<?php echo esc_url( home_url() ); ?>">
            <div class="col-auto">
                <table>
                    <tr>
                        <td>
                            <input class="form-control" placeholder="Suche" type="text" value="<?php echo esc_attr($s); ?>" name="s" />
                        </td>
                        <td>
                            <input class="btn btn-outline-search" type="submit" id="search_submit" value="Suche"/>
                        </td>
                    </tr>
                </table>
            </div>
        </form>
    </div>
</div>
还要注意我所做的其他更改:

我删除了id 来自表单和输入,因为它们是重复的,这在HTML中是不允许的。如果需要,可以添加任何ID,只要它们是唯一的$_SERVER[\'PHP_SELF\']; 具有home_url(), 这是在WordPress中获取主页URL的正确方法esc_html() 第二个参数设置为1. 这没有任何作用,所以我把它删除了esc_html() 具有esc_attr(), 因为它更适合转义属性

相关推荐

使用WP-CLI和/或Search-Replace-DB迁移多站点

我有一个Wordpress 5.5/PHP7.3多站点生产站点安装,我正在尝试将其迁移到本地LAMP开发环境,以便进行编辑。The Problem: 就是在运行Search Replace DB脚本或WP Cli多站点迁移脚本时。一个子网站完美地加载到新的开发域上,同时主网站和具有相同主题的子网站成功加载,但主题似乎已中断(基于visual composer)。可能还有其他非视觉错误。我已经下载了所有文件,正确配置了LAMP virtualhost,并通过PHPMYADMIN将数据库导入到我的本地LAMP