Массовое добавление к родительскому и дочернему элементам

#php #wordpress

#php #wordpress

Вопрос:

ищу способ отображения только определенных скриптов на родительской странице и всех ее дочерних страницах. Я пытаюсь выполнить это без необходимости входить и добавлять каждый родительский / дочерний URL.

Вот что у меня было:

  function answerConnect_add_script_wp_footer() {
  /** Tells what pg to display on AND it's child pgs **/
  if (is_page ( array('foley-al','fargo-nd','advantages','project-gallery','cabinet-redooring') ) ) {
     ?>
        <script>
             console.log("I'm an inline script tag added to the footer.");
  ( function( a , b , c , d , e , f , g ) { c[d] = c[d] || function() { (c[d].q = c[d].q || []).push(arguments); }; c[ '_lsAlias' ] = c[ d ]; e = a.createElement(b); e.type = 'text/javascript'; e.async = true; e.src = 'https://app.chatsupport.co/api/client/get/script/LS-1f4db298'; f = function() { g = a.getElementsByTagName(b)[0]; g.parentNode.insertBefore( e , g ); }; c.addEventListener( 'load' , f ); } )( document , 'script' , window , '_ls' ); _ls( 'init' , { 'projectId' : 'LS-1f4db298' } );
        </script>
     <?php
  }
 }```

I was later told this was wrong and should be:

```add_action( ‘wp_enqueue_scripts’, function() {
      if ( is_page() amp;amp; in_array( $ //pageidofparent, get_post_ancestors( get_the_id()))) {
               ?>
        <script>
             console.log("I'm in your footer.");
  ( function( a , b , c , d , e , f , g ) { c[d] = c[d] || function() { (c[d].q = c[d].q || []).push(arguments); }; c[ '_lsAlias' ] = c[ d ]; e = a.createElement(b); e.type = 'text/javascript'; e.async = true; e.src = 'https://app.chatsupport.co/api/client/get/script/LS-1f4db298'; f = function() { g = a.getElementsByTagName(b)[0]; g.parentNode.insertBefore( e , g ); }; c.addEventListener( 'load' , f ); } )( document , 'script' , window , '_ls' ); _ls( 'init' , { 'projectId' : 'LS-1f4db298' } );
        </script>
     <?php

    }

});
 

Я все еще новичок в этом, поэтому не уверен, как вообще использовать этот последний бит.

Комментарии:

1. Эта статья wpbeginner.com/wp-tutorials /… может указать вам правильное направление.

Ответ №1:

По мере необходимости добавьте этот код в свой wp-content/your-theme/functions.php :

 add_action( 'wp_footer', 'my_footer_scripts' );
function my_footer_scripts(){
   if (is_tree(2)) { // Your parent page ID
   ?>
   <script>
       console.log("I'm an inline script tag added to the footer.");
       ( function( a , b , c , d , e , f , g ) { c[d] = c[d] || function() { (c[d].q = c[d].q || []).push(arguments); }; c[ '_lsAlias' ] = c[ d ]; e = a.createElement(b); e.type = 'text/javascript'; e.async = true; e.src = 'https://app.chatsupport.co/api/client/get/script/LS-1f4db298'; f = function() { g = a.getElementsByTagName(b)[0]; g.parentNode.insertBefore( e , g ); }; c.addEventListener( 'load' , f ); } )( document , 'script' , window , '_ls' ); _ls( 'init' , { 'projectId' : 'LS-1f4db298' } );
   </script>
  <?PHP
   }
}

function is_tree($pid) {      // $pid = The ID of the page we're looking for pages underneath
    global $post;         // load details about this page
    if(is_page()amp;amp;($post->post_parent==$pid||is_page($pid))) 
        return true;   // we're at the page or at a sub page
    else 
        return false;  // we're elsewhere
};
 

Объяснение

  1. Код использует действие WordPress wp_footer для добавления нашего пользовательского кода в нижний колонтитул
  2. is_tree() это пользовательская функция для проверки определенной страницы и ее дочерних элементов по идентификатору страницы