使用unctions.php进行Pinterest集成

时间:2012-07-09 作者:ogni

我用一个主题来构建一个投资组合。

我想在功能中添加一个pinterest“pin it button”。php:Facebook、谷歌+推特都完成了,只是pinterest不起作用。

找不到错误的代码。这是我的代码:

function share_this($content){
if ( is_singular( \'portfolio\' ) ) {
$content .= \'<div class="share-this">\' .  
      /* Facebook */
      \'<div class="facebook-like-button">\' . 
            \'<iframe src="http://www.facebook.com/plugins/like.php?href=\'. urlencode( get_permalink( $post->ID ) ) . 
            \'&amp;layout=button_count&amp;show_faces=false&amp;width=200&amp;action=like&amp;colorscheme=light&amp;height=21"\' . 
            \'scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:200px; height:21px;" allowTransparency="true"></iframe>\' .
      \'</div>\' . 

     /* Pinterest */
    \'<div class="pinterest-it-button">\' 
             \'<a href="http://pinterest.com/pin/create/button/?url=<?php echo get_permalink(); ?>&media=<?php echo get_thumbnail(); ?>
             \'&description=<?php the_title(); ?>" class="pin-it-button" count-layout="horizontal">Pin It</a>
            \'<script type="text/javascript" src="http://assets.pinterest.com/js/pinit.js"></script>\'.
    \'</div>\' . 

     /* Googgle+ */
    \'<div class="plusone"><g:plusone size="medium" href="\'.get_permalink().\'"></g:plusone></div>\' .
     /* Twitter */
    \'<div><a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal">Tweet</a></div>\' .

\'</div>\';
}
谢谢

3 个回复
最合适的回答,由SO网友:Evan Mattson 整理而成

您的代码中有几个错误。最大的问题是这个函数甚至没有一个右括号,但我们可以假设它没有被复制到你的帖子中,否则什么都不会对你有用。

这是内容上的筛选器,对吗?

看起来您想在发布内容后附加这些共享。如果是这种情况,那么您也需要这一行:

add_filter(\'the_content\',\'share_this\');
除此之外,您还试图关闭php标记,并在语句中打开它们,在语句中向$content 变量您还试图回显数据,并使用函数来回显而不是返回(例如the_title echos代替get_the_title 返回值)。

我没有在内容中附加一个大字符串,而是使用数组构建方法进行了清理,但有多个$shares .= 也会起作用的。

虽然我还没有测试过,但它应该可以工作。

<?php
function share_this($content) {
    if ( is_singular( \'portfolio\' ) ) {
        global $post;

        $link = esc_attr(get_permalink($post->ID));
        $title = esc_attr(get_the_title($post->ID));

        $image_id = get_post_thumbnail_id($post-ID);
        $image_url = wp_get_attachment_image_src($image_id);
        $thumb = $image_url[0];

        $shares = array();
        $shares[] = \'<div class="share-this">\';

        /* Facebook */
        $shares[] = \'<div class="facebook-like-button"><iframe src="http://www.facebook.com/plugins/like.php?href=\'.$link.\'&amp;layout=button_count&amp;show_faces=false&amp;width=200&amp;action=like&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:200px; height:21px;" allowTransparency="true"></iframe></div>\';

        /* Pinterest */
        $shares[] = \'<div class="pinterest-it-button"><a href="http://pinterest.com/pin/create/button/?url=\'.$link.\'&amp;media=\'.$thumb.\'description=\'.$title.\' class="pin-it-button" count-layout="horizontal">Pin It</a><script type="text/javascript" src="http://assets.pinterest.com/js/pinit.js"></script></div>\';

        /* Googgle+ */
        $shares[] = \'<div class="plusone"><g:plusone size="medium" href="\'.$link.\'"></g:plusone></div>\';

        /* Twitter */
        $shares[] = \'<div><a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal">Tweet</a></div>\';

        $shares[] = \'</div>\';

        return $content . implode("\\n", $shares);
    }
}

SO网友:Bainternet

您正在构建错误的URL,因为首先需要对其进行URL编码,其次是什么get_thumbnail() 它是否打印完整的img标签?第三,你在呼应它。

无论如何,试试这个

/* Pinterest */
$baseurl = \'http://pinterest.com/pin/create/button/?\';
$url = \'url=\'.urlencode(get_permalink());
$mediaUrl = \'&media=\'.urlencode(wp_get_attachment_image_src ( get_post_thumbnail_id()));
$description = \'&description=\'.urlencode(get_the_title());
$fullURL = $baseurl.$url.$mediaUrl.$description;
$content .= \'<div class="pinterest-it-button">
<a href="\'.$fullURL.\'" class="pin-it-button" count-layout="horizontal">Pin It</a>
        <script type="text/javascript" src="http://assets.pinterest.com/js/pinit.js"></script>
</div>\';

SO网友:Milo

您的问题是简单的php语法。不能使用打开和关闭php大括号<?php?> 在变量赋值中,单独的字符串和变量必须用点连接.

以G+和Facebook按钮为例。我也认为你想return 你的结果?

结束

相关推荐

有没有人知道一个插件可以把一篇帖子变成一份html时事通讯?

我知道你可以拿到密码之类的东西。但我正试图找到一种方法,可以轻松地为客户实现这一点。我在google上搜索到的都是注册表格,而不是发帖子的内容。总结一下我的目标:我希望客户端能够创建帖子,使用内置的文本编辑器进行格式化等,可能会附加图片等。这样他们就可以在线获得完整的新闻稿存档。然后我想让他们有办法把它发送出去。要么导出html代码(通过模板),要么将其直接链接到mailchimp等。有人做过类似的事情吗?或者你有没有什么想法,我应该检查一下插件?如果它不存在,我并不反对尝试为此编写插件(尽管我还不确定如