繁体   English   中英

在我的WordPress主题的Facebook插件的page.php中,何处添加JavaScript SDK代码?

[英]Where to add the JavaScript SDK code in the page.php of my WordPress theme for the Facebook Plugin?

我不确定在哪里将Facebook为Facebook插件提供的代码添加到我的page.php中

这是我的原始page.php

<?php 
/**
* Theme Page Section for our theme.
*
* @package ThemeGrill
* @subpackage Spacious
* @since Spacious 1.0
*/
?>

<?php get_header(); ?>

<?php do_action( 'spacious_before_body_content' ); ?>

<div id="primary">
    <div id="content" class="clearfix">
        <?php while ( have_posts() ) : the_post(); ?>

            <?php get_template_part( 'content', 'page' ); ?>

            <?php
            do_action( 'spacious_before_comments_template' );
// If comments are open or we have at least one comment, load up the comment template
            if ( comments_open() || '0' != get_comments_number() )
                comments_template();                    
            do_action ( 'spacious_after_comments_template' );
            ?>

        <?php endwhile; ?>

    </div><!-- #content -->
</div><!-- #primary -->

<?php spacious_sidebar_select(); ?>

<?php do_action( 'spacious_after_body_content' ); ?>

<?php get_footer(); ?>

这是Facebook插件代码

<div id="fb-root"></div>
        <script>
            (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 = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.5";
            fjs.parentNode.insertBefore(js, fjs);
            }(document, 'script', 'facebook-jssdk'));
        </script>

我要求主题的支持在哪里插入Facebook插件代码,他们回答是:

在主体选项卡之后,我们包含了一个动作钩子:do_action('before'); 在您的子主题中创建一个函数,添加所需的代码并将其挂钩到上述动作挂钩。 像这样:function any_name(){将您的代码粘贴到此处(如果是HTML,则正确使用php标记的开始/结束))} add_action('before','any_name');

我看不到任何身体标签。

如果我在此行下方插入Facebook插件代码,是否正确?

<?php do_action( 'spacious_before_body_content' ); ?>

所以它看起来像这样:

<?php 
/**
* Theme Page Section for our theme.
*
* @package ThemeGrill
* @subpackage Spacious
* @since Spacious 1.0
*/
?>

<?php get_header(); ?>

<?php do_action( 'spacious_before_body_content' ); ?>

    <div id="fb-root"></div>
        <script>
            (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 = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.5";
            fjs.parentNode.insertBefore(js, fjs);
            }(document, 'script', 'facebook-jssdk'));
        </script>

<div id="primary">
    <div id="content" class="clearfix">
        <?php while ( have_posts() ) : the_post(); ?>

            <?php get_template_part( 'content', 'page' ); ?>

            <?php
            do_action( 'spacious_before_comments_template' );
// If comments are open or we have at least one comment, load up the comment template
            if ( comments_open() || '0' != get_comments_number() )
                comments_template();                    
            do_action ( 'spacious_after_comments_template' );
            ?>

        <?php endwhile; ?>

    </div><!-- #content -->
</div><!-- #primary -->

<?php spacious_sidebar_select(); ?>

<?php do_action( 'spacious_after_body_content' ); ?>

<?php get_footer(); ?>

如果您还可以提供简短的解释或链接,以了解如何以及为什么,那么这将是我学习新知识的好机会。

edit_1: 是我要插入网站页面的插件。 订阅时事通讯后,它将添加到“谢谢页面”中。 您可以尝试进行设置并执行“获取代码”,这样您就可以看到其中的内容。

为了将插件添加到您的网站,您必须添加2个代码:

  1. JavaScript SDK代码(以上称为Facebook Plugin Code ):您必须将其添加到.php文件中的某个位置才能将您的网站连接到您的Facebook页面;
  2. 显示内容的实际代码:您必须将此代码放置在您希望插件出现的位置,例如帖子,页面或侧边栏中。

我注意到的是,如果我将第一个代码(JavaScript SDK)添加到文件page.php中,则只能将第二个代码(显示内容的代码)添加到页面中(而不是例如在边栏中)。 。 如果将第一个代码添加到header.php中,则可以在任何地方添加第二个代码。

问题是,我不知道如何添加第一个代码以及在哪里添加。 我的意思是,实际上,我不知道从哪里开始将代码写入.php文件。

edit_2:好吧,这是我标题的摘录,我应该将代码粘贴到“空格一”,“空格二”或其他地方吗?

<body <?php body_class(); ?>>
--SPACE ONE--
<?php   do_action( 'before' ); ?>
--SPACE TWO--
<div id="page" class="hfeed site">
    <?php do_action( 'spacious_before_header' ); ?>
    <header id="masthead" class="site-header clearfix">
    </header>

关于钩子,你是对的,这让我很困惑!

通常,当您在任何页面上添加Facebook脚本时,只需将代码段放在body标签之后。 wordpress页面将被添加到body标签内,因此您在上面所做的一切都很好。

在主体选项卡之后,我们包含了一个动作钩子:do_action('before'); 在您的子主题中创建一个函数,添加所需的代码并将其挂钩到上述动作挂钩。 像这样:function any_name(){将您的代码粘贴到此处(如果是HTML,则正确使用php标记的开始/结束))} add_action('before','any_name');

但是这里提到的是一种更好的方法。.您需要为您的facebook脚本创建一个钩子。 这样,您只需调用Action即可,而不必每次在每个页面上添加该代码段时都复制该代码段。

有关更多信息,请查看Facebook SDK文档。

fb-root元素不得使用display:none或可视性:hidden来隐藏,否则SDK的某些部分将无法在Internet Explorer中正常工作。

SDK会将元素插入到fb-root中,这些元素应该相对于正文或相对于页面顶部附近的元素定位。 最好是fb-root元素不在具有position:absolute或position:relative的元素内。 如果必须将fb-root元素放置在定位元素的内部,则还应使其位置靠近主体顶部,否则SDK的某些部分可能无法正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM