Обмен WordPress && для Html в кодировке JS <script> - PullRequest
1 голос
/ 02 марта 2020

Я хочу реализовать простой скрипт на странице, используя блок HTML с функцией JS, заключенной в тег скрипта.

Но когда он отображается, он берет оператор && и преобразует его в HTML код символа для амперсандов (&#038;&#038). Я попытался минимизировать его, изменив условный оператор, но не могу заставить его работать. Я знаю, что код в порядке, потому что я проверил его в консоли, и он работает нормально. Я думаю, что когда Wordpress обрабатывает это, возникает какая-то проблема.

В настоящее время я не могу реализовать это с помощью файла functions. php. Требуется реализовать на странице.

Ниже приведен код, который я реализую

<script>
const mainNavLinks = document.querySelectorAll(".wp-block-senff-sticky-block ol li a");
      window.addEventListener("scroll", event => {
        let fromTop = window.scrollY - 600;
        mainNavLinks.forEach(link => {
          let section = document.querySelector(link.hash);
          if ( section !== null && section.offsetTop <= fromTop && section.offsetTop + section.offsetHeight > fromTop ) {
            link.classList.add("current");
          } else {
            link.classList.remove("current");
          }
        });
      });
</script>

Here is the output:

<script>
const mainNavLinks = document.querySelectorAll(".wp-block-senff-sticky-block ol li a");
      window.addEventListener("scroll", event => {
        let fromTop = window.scrollY - 600;
        mainNavLinks.forEach(link => {
          let section = document.querySelector(link.hash);
          if ( section !== null&&section.offsetTop <= fromTop&#038;&#038;section.offsetTop + section.offsetHeight > fromTop ) {
            link.classList.add("current");
          } else {
            link.classList.remove("current");
          }
        });
      });</script>

Ответы [ 2 ]

1 голос
/ 02 марта 2020

В качестве обходного пути можно использовать вложенные условия:

if ( section !== null } {
  if ( section.offsetTop <= fromTop ) {
     if (section.offsetTop + section.offsetHeight > fromTop ) {
            link.classList.add("current");
     } 
  }
}
0 голосов
/ 02 марта 2020

Полагаю, вы могли бы остановить это, добавив в свои функции следующее: php файл, чтобы остановить преобразование сущностей.

function force_decode_entities( $content ) {
  //Ensure this only runs on a specific page of your choice
  if( is_page('your-page-slug-here') ) {
    return decode_entities( $content );
  }
  return $content;
}

add_filter( 'the_content', 'force_decode_entities', 1 )

Я добавил оператор if(), потому что, если вы примените его глобально, он может прекратить использование блоков кода как обычно, поскольку он будет отображать их как буквальный код, который будет интерпретировать браузер.

Хотя стоит отметить, что вы не должны запускать код от администратора. Это просто плохая практика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...