在使用插件时,如何手动定位共享此按钮?

时间:2014-02-08 作者:Adam Christianson

在开发自定义主题时,我有一些客户希望将ShareThis用于他们的社交媒体。ShareThis提供了一个带有控制面板的插件,允许客户端管理按钮、样式等。问题是ShareThis插件使用上的过滤器呈现按钮the_content. 这意味着该按钮必须始终显示在主内容块的正后方。使用插件时,是否有某种方法可以手动控制共享此按钮在模板中的位置?我知道我可以手动将ShareThis代码放在我的模板中,但是客户端无法在Wordpress控制面板中进行控制。

2 个回复
SO网友:Adam Christianson

如果有帮助的话,目前我可以用这种方法做我想做的事情。我不确定这是否是最好的方法,我也没有在我的开发环境之外测试过它。到目前为止,它似乎奏效了。我希望这能激发一些反馈意见,或许还有其他解决方案。

其基本思想是:

1) 禁用内置的ShareThis调用,该调用会自动在页面和帖子上插入按钮(它们通过调用add_filter(\'the_content\', \'st_add_widget\'); 在中的第285行附近sharethis.php 插件中的文件)。

2) 创建我自己的操作,可以调用该操作将ShareThis小部件插入模板中我想要的位置。

3) 所有这些都在functions.php 所以我不必破解插件或Wordpress核心。这样做应该允许WP和插件更新在没有任何未来问题的情况下运行。

Solution已将此添加到我的functions.php

//remove share this from all content
function remove_sharethis() {
  remove_filter(\'the_content\', \'st_add_widget\');
  remove_filter(\'the_excerpt\', \'st_add_widget\');
  remove_action(\'wp_head\', \'st_widget_head\');
}
add_action( \'template_redirect\', \'remove_sharethis\' );

function print_sharethis_widget( ){
    print st_widget_head();
    print st_add_widget(\'\');
}
add_action( \'custom_sharethis_widget\',\'print_sharethis_widget\');
然后在我的模板中,我调用custom_sharethis_widget 我希望ShareThis按钮出现的操作。像这样:

<div id="my-sharethis"><?php do_action( \'custom_sharethis_widget\' ); ?></div>
我花了一段时间才解决这个问题,所以希望这能帮助其他人解决这个问题。

SO网友:Brad Dalton

Note: 这个sharethis plugin 尚未使用过滤器正确编码,可能会在侧栏中显示按钮,因此您可以考虑手动安装代码。

With the plugin installed

您需要使用所有3个代码段

您首先需要做的是删除按钮,您可以在子主题函数中使用此代码来执行这些操作。php文件。

function remove_share_this() {
remove_filter( \'the_content\', \'st_add_link\' );
remove_filter( \'the_excerpt\', \'st_add_widget\' );
remove_filter(\'the_content\', \'st_add_widget\');
remove_filter( \'the_excerpt\', \'st_add_link\' );
}
add_action( \'loop_start\', \'remove_share_this\' );

This method enables you to display the buttons without installing the plugin.

只需要这两个步骤

然后,需要将脚本添加到要显示按钮的页面中。

<script type="text/javascript">var switchTo5x=true;</script>
<script type="text/javascript" src="http://w.sharethis.com/button/buttons.js"></script>
<script type="text/javascript">stLight.options({publisher: "your-pub-i.d", doNotHash: false, doNotCopy: false, hashAddressBar: false});</script>
我使用了一个主题脚本框,但是您可以有条件地加载它,并使用wp_enqueue_scripts

然后,您可以使用WordPress或主题特定的挂钩将span标记添加到页面中,或者直接在模板中添加,如single。php

<span class=\'st_sharethis_large\' displayText=\'ShareThis\'></span>
<span class=\'st_facebook_large\' displayText=\'Facebook\'></span>
<span class=\'st_twitter_large\' displayText=\'Tweet\'></span>
<span class=\'st_linkedin_large\' displayText=\'LinkedIn\'></span>
<span class=\'st_pinterest_large\' displayText=\'Pinterest\'></span>
<span class=\'st_email_large\' displayText=\'Email\'></span>

结束

相关推荐

WordPress Themes and PHP unit

有没有将PHP单元测试与WordPress主题结合使用的例子,似乎很多关于这个主题的博客都过时了,因为核心单元测试是trac的一部分,然而昨天晚上,我拉了trac,试图设置一个示例主题来运行测试。它不能安静地工作,你必须运行所有的测试来测试你的主题,即使你尝试并需要一个文件-它试图在WordPress被实例化之前需要它,它会变得一团糟。无论如何,我知道有一个用于主题单元测试的插件,但它只是安装了大量“尝试”并破坏主题的帖子,并没有测试底层逻辑,尤其是在构建框架的情况下,php单元在这里是最好的,因为您可以