带有定制脚本的简单插件将不起作用-没有控制台错误

时间:2021-01-05 作者:morph3us

请原谅我,这可能是重复的,但我不确定再搜索什么,因为我没有得到任何错误代码。

我想使用javascript实现以下代码示例中的文本高亮显示:

https://www.the-art-of-web.com/javascript/search-highlight/#box1

为此,我在我的第一个自定义插件上做了一次痛苦的尝试:

<?php
/*
Plugin Name: InPage-Search-Highlight
Plugin URI:  http://link to your plugin homepage
Description: Highlights all occurences of a search term within the same page.
Version:     1.0
Author:      morph3us - based off of https://www.the-art-of-web.com/javascript/search-highlight/
Author URI:  http://www.morph3us.net
License:     CC0
*/

function inpage_search_highlight() {
    $pluginurl = plugins_url(\'/inpage-search-highlight/js/hilitor.js\');

    echo "<div class=\'inpage-search\' style=\'margin-top:300px\'>
        <script type=\'text/javascript\' src=\'{$pluginurl}\'></script>
        <script type=\'text/javascript\'>
          var myHilitor = new Hilitor(\'page-template\'); // id of the element to parse
          myHilitor.apply(\'highlight words\');
        </script>
    </div>";
}

add_shortcode(\'inpage_search_highlight\', \'inpage_search_highlight\');
?>
显然,我还添加了一个名为“quot;js“;和一个名为;hilitor。js";。在后者中,我从网站上复制了代码。

echo的内容在chrome开发者工具中可见,但实际页面上没有搜索框。

编辑故事的寓意:我确实初始化了Javascript,但没有提供任何UI来调用它们。对我来说,有太多的新东西,以至于我忽略了显而易见的东西。

我被网络教程艺术中的措辞误导了。因为第2段的标题是;如何实施;,我认为这将是整个整合,它可能应该更具体地称为;如何初始化highlitor类“;或者别的什么。

在第5节中,有一个示例很容易实现,并且比我最初设想的效果更好。

谢谢你们的帮助,伙计们,你们真的让我重新思考了正确的事情!因此,代码中的工作回声部分是:

    echo "<div class=\'inpage-search\' style=\'margin-top:300px\'>
        <form>
            <p>Highlight keywords as you type: <input id=\'keywords\' size=\'24\'></p>
        </form>

        <script src=\'{$pluginurl}\'></script>
        <script>

          window.addEventListener(\'DOMContentLoaded\', function(e) {
            var myHilitor2 = new Hilitor(\'playground\');
            myHilitor2.setMatchType(\'left\');
            document.getElementById(\'keywords\').addEventListener(\'keyup\', function(e) {
              myHilitor2.apply(this.value);
            }, false);
          }, false);

        </script>   
    </div>";

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

您可以;借用“;html表单,并将其包含在模板中-直接或通过类似wp\\U页脚的过滤器:

<form method="GET" action="/javascript/search-highlight/" onsubmit="myHilitor.apply(hilite.value); return false;">
<fieldset>
<legend>Highlight Words</legend>
<label>Keywords</label><span><input type="text" size="32" name="hilite" value="search engine keywords">
<input type="submit" value="Apply">
<input type="button" value="Remove" onclick="myHilitor.remove();"></span>
</fieldset>
</form>

相关推荐

使用$wpdb或其他PHP脚本方法在WP数据库中查找/替换

我希望为我的网站使用的自定义WordPress插件推出一个bug修复程序。该插件使用各种属性注册一个短代码。但是,有一个错误,其中一个属性被错误地调用,因此它永远不会在HTML中呈现。因为我有很多用户使用这个插件,所以他们可能会在生产页面的短代码中不知不觉地设置了这个属性,这意味着推动修复可能会导致这些页面呈现不正确。我基本上想运行一个脚本;重置(&Q);将shortcode属性的所有实例设置为默认值(\'\', 在这种情况下)。我希望regex查找以下所有实例:\\[shortcode_name(.*?