Плагин Facebook для WooCommerce

#wordpress #facebook #plugins

Вопрос:

Мой клиент установил плагин Facebook для WooCommerce, чтобы иметь доступ только к сервису живого чата messenger, доступному этому плагину. Что я хочу сделать, так это отобразить значок чата мессенджера только на конкретных страницах (например: страница содержимого и часто задаваемые вопросы), а не на всех страницах.

Внутри основных файлов плагина есть следующие строки кода:

 public __construct($settings) {
    ...
    ...
    add_action( 'wp_footer', array( $this, 'inject_messenger_chat_plugin' ) );
}

public function inject_messenger_chat_plugin() {
            if ( facebook_for_woocommerce()->get_integration()->is_messenger_enabled() ) :

                printf(
                    "
                    <div
                        attribution="fbe_woocommerce"
                        class="fb-customerchat"
                        page_id="%s"
                    ></div>
                    <!-- Facebook JSSDK -->
                    <script>
                      window.fbAsyncInit = function() {
                        FB.init({
                          appId            : '',
                          autoLogAppEvents : true,
                          xfbml            : true,
                          version          : '%s'
                        });
                      };

                      (function(d, s, id){
                          var js, fjs = d.getElementsByTagName(s)[0];
                          if (d.getElementById(id)) {return;}
                          js = d.createElement(s); js.id = id;
                          js.src = 'https://connect.facebook.net/%s/sdk/xfbml.customerchat.js';
                          fjs.parentNode.insertBefore(js, fjs);
                        }(document, 'script', 'facebook-jssdk'));
                    </script>
                    <div></div>
                    ",
                    esc_attr( $this->page_id ),
                    esc_js( $this->jssdk_version ?: 'v5.0' ),
                    esc_js( facebook_for_woocommerce()->get_integration()->get_messenger_locale() ?: 'en_US' )
                );

            endif;
        }
 

Как я мог добавить что-то вроде:

 global $post;
//echo $post->ID;
if($post->ID == 1) {...}
 

и обернуть скрипт, который есть у плагина?

Или есть способ перезаписать функцию inject_messenger_chat_plugin внутри моей дочерней темы?

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

1. Нет, вы не можете просто перезаписать метод класса, не изменяя исходный файл напрямую. Возможно, вы могли бы расширить класс и создать свой собственный, а затем вы можете перезаписать определенные методы своими собственными. Но тогда вам все равно нужно будет заменить имя класса везде, где создается экземпляр оригинала … Возможно, было бы разумнее не использовать этот плагин, а поместить созданный им HTML/JS-код в свой шаблон самостоятельно.