创建插件以在整个WordPress站点中更改TM符号

时间:2016-12-25 05:46:57

标签: php jquery wordpress

我找到了这个Altering registered symbols (R)的答案,我正在尝试实现类似的东西。

客户不希望TM显示上标,他们想要替代版本显示为下标。

我正在尝试创建我的第一个WordPress插件来实现这一点,它将采用任何版本的符号(符号,名称代码,十进制代码或十六进制代码)并将其替换为下标风格版本)。

这是我到目前为止所得到的......

<?php
/*
Plugin Name: Subscript the TM symbol
Plugin URI: TBD
Description: This is my first plugin. Client wants the TM subscript. So I'm    figuring it out. :D
Version: 0.1
Author: Sarah Collins
Author URI: http://sarahcollinsweb.design
*/

( function( $ ) {
    "use strict";

    $( function () {

        var replaced1 = $('').html().replace('™', '<sub>™</sub>');
        $('').html(replaced1;

    });



    $( function () {

        var replaced2 = $('').html().replace('&trade;', '<sub>&trade;</sub>');
        $('').html(replaced2);

    });


    $( function () {

        var replaced3 = $('').html().replace('&#8482;', '<sub>&#8482;</sub>');
        $('').html(replaced3);

    });


    $( function () {

        var replaced4 = $('').html().replace('&#x2122;', '<sub>&#x2122;</sub>');
        $('').html(replaced4);

    });


}(jQuery));

?>

:\我发生致命错误。我做错了什么?

1 个答案:

答案 0 :(得分:0)

我看到一些需要修复的事情。首先,这是更新版本:

<?php
/*
Plugin Name: Subscript the TM symbol
Plugin URI: TBD
Description: This is my first plugin. Client wants the TM subscript. So I'm    figuring it out. :D
Version: 0.1
Author: Sarah Collins
Author URI: http://sarahcollinsweb.design
*/

add_action( 'wp_head', function () {
    ?>
    <script>
      (function ($) {
        "use strict";
        $(document).ready(function(){
          var replaced1 = $('body').html().replace('™', '<sub>™</sub>');
          $('body').html(replaced1);

          var replaced2 = $('body').html().replace('&trade;', '<sub>&trade;</sub>');
          $('body').html(replaced2);

          var replaced3 = $('body').html().replace('&#8482;', '<sub>&#8482;</sub>');
          $('body').html(replaced3);

          var replaced4 = $('body').html().replace('&#x2122;', '<sub>&#x2122;</sub>');
          $('body').html(replaced4);
        });
      }(jQuery));
    </script>
    <?
} );

这是变化:

  1. 你正在混合使用PHP和Javascript,这并不好。 Javascript是在用户的Web浏览器中运行的代码,因此您需要实际输出该代码。在上面的代码中,PHP解释器实际上是在尝试运行JavaScript代码,这绝对不会起作用 - 答案是将最小的东西分开,我将在下面解释。

  2. 相反,为了让您的想法有效,您必须使用WordPress's actions。将操作视为WordPress处理请求并为访问者生成页面时发生的事件是有帮助的,WordPress为您提供了做某事的机会 - 任何事情!在这种情况下,您希望将一些JavaScript添加到HTML文档的<head>,并且您要挂钩的操作是wp_head action。 (仅供参考,WordPress提供了许多动作,你甚至可以make your own - 这会变得更加先进。但是,可以说这是WordPress允许插件/主题的基本机制运行自定义代码。)

  3. 我简化了您的JavaScript代码并删除了几个(function(){}(...))包装器;那些并没有真正做任何事情来提高你的代码效率。我想你可能只是复制/粘贴了你在这里建立的部分,但是可以减少/删除它。

  4. 同样在JavaScript中,我将代码包装在$(document).ready()回调中;这样,在页面准备好之前,您的代码才会运行 。这很重要,否则你的代码只会在加载后立即运行,并且可能无法正常工作 - 在尝试操作页面的text / html内容之前,你应该总是等到文档准备就绪。

  5. 正如旁注,有些人可能会指出这不是使用jQuery的最有效方式 - 但我认为现在可以跳过它!主要是试图演示如何从WordPress插件运行JavaScript,所以请试一试,让我们知道是否有任何问题/问题。