调用用于社交共享的函数

时间:2015-01-03 作者:Kareem

使用此tutorial 我能够创建共享按钮,但代码插入后的问题the_content();, 我想有能力调用我的模板中的任何地方。我的理解是add_filter(\'the_content\') 这就是原因,所以我怎样才能把它改成随处可见。

function social_buttons($content) {
    global $post;
    $permalink = get_permalink($post->ID);
    $title = get_the_title();
    if(!is_single() && !is_page()) {
        $content = $content . \'<div class="contentBottom">
        <ul class="share">
            <li><a href="#"><i class="fa fa-share-alt"></i>شارك</a>
                <ul class="social">
                   <li><a href="https://www.facebook.com/sharer/sharer.php?u=\'.$permalink.\'"
             onclick="window.open(this.href, \\\'facebook-share\\\',\\\'width=580,height=296\\\');return false;"><i class="fa fa-facebook"></i></a></li>
                   <li><a href="http://twitter.com/share?text=\'.$title.\'&url=\'.$permalink.\'"
            onclick="window.open(this.href, \\\'twitter-share\\\', \\\'width=550,height=235\\\');return false;"><i class="fa fa-twitter"></i></a></li>
                   <li><a href="https://plus.google.com/share?url=\'.$permalink.\'"
           onclick="window.open(this.href, \\\'google-plus-share\\\', \\\'width=490,height=530\\\');return false;"><i class="fa fa-google-plus"></i></a></li>
                   <li><a href="#"><i class="fa fa-envelope"></i></a></li>
               </ul>
           </li>
        </ul>
        <ul class="printComment">
            <li><a href="javascript:window.print()" rel="nofollow"><i class="fa fa-print"></i>طباعة</a></li>
            <li><a href="#"><i class="fa fa-comments-o"></i>شارك بالتعليق</a></li>
        </ul></div>\';
    }
    return $content;
}
add_filter(\'the_content\', \'social_buttons\');

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

虽然我实际上链接到了错误的帖子this post 还是应该帮助你的。我想链接的实际帖子是this one

您应该使用第二个链接作为指导,因为您的代码存在一些问题,尽管不是主要问题。这里最大的问题是代码的重复

要返回实际需要的内容,必须删除过滤器和$content 通过引用传递给the_content 滤器

您只需将现有代码修改为以下内容

function social_buttons() {
    global $post;
    $permalink = get_permalink($post->ID);
    $title = get_the_title();
    if(!is_single() && !is_page()) { ?>
        <div class="contentBottom">
        <ul class="share">
            <li><a href="#"><i class="fa fa-share-alt"></i>شارك</a>
                <ul class="social">
                   <li><a href="https://www.facebook.com/sharer/sharer.php?u=\'.$permalink.\'"
             onclick="window.open(this.href, \\\'facebook-share\\\',\\\'width=580,height=296\\\');return false;"><i class="fa fa-facebook"></i></a></li>
                   <li><a href="http://twitter.com/share?text=\'.$title.\'&url=\'.$permalink.\'"
            onclick="window.open(this.href, \\\'twitter-share\\\', \\\'width=550,height=235\\\');return false;"><i class="fa fa-twitter"></i></a></li>
                   <li><a href="https://plus.google.com/share?url=\'.$permalink.\'"
           onclick="window.open(this.href, \\\'google-plus-share\\\', \\\'width=490,height=530\\\');return false;"><i class="fa fa-google-plus"></i></a></li>
                   <li><a href="#"><i class="fa fa-envelope"></i></a></li>
               </ul>
           </li>
        </ul>
        <ul class="printComment">
            <li><a href="javascript:window.print()" rel="nofollow"><i class="fa fa-print"></i>طباعة</a></li>
            <li><a href="#"><i class="fa fa-comments-o"></i>شارك بالتعليق</a></li>
        </ul></div>
    <?php 
}
}
现在,您可以在喜欢的地方调用函数,如下所示

social_buttons();

结束

相关推荐

Multisite and plugins options

我需要更多关于get_site_option(), update_site_option() 和add_site_option().在codex中,他们说它与单次安装相同,只是在多站点中,它返回网络范围的选项。好吧,但我对这一点感到困惑:这是否意味着一旦设置了网络范围选项,所有站点的选项都是相同的?还是每个站点都会覆盖它?我的意思是如果我这样做: update_site_option(\'option_group\', \'default_options());// default_options() r