web-dev-qa-db-ja.com

Functions.phpを使ったPinterestの統合

私はテーマを使ってポートフォリオを作ります。

私は、fuctions.phpに興味をそそる「ピン留めボタン」を追加したいと思います。Facebook、Google +、Twitterが行われました。

間違ったコードを見つけることができません。これは私のコードではありません:

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>';
}

ありがとう

2
ogni

コードにいくつかのエラーがありました。最大のものは、関数が閉じ括弧さえ持っていないということでしたが、おそらくそれがあなたの投稿にコピーされていないのではないかと思われるかもしれません。

これはコンテンツに対するフィルタですね。

投稿内容の後にこれらの共有を追加したいようです。もしそうであれば、この行も必要になるでしょう。

add_filter('the_content','share_this');

それ以外は、あなたはphpタグを閉じて$content変数に文字列データを追加しているステートメントの中でそれらを開くことを試みていました。あなたはデータをエコーし​​ようとしていて、returnの代わりにechoに関数を使用していました(例えば、値を返すthe_titleの代わりにget_the_title echos)。

あなたのコンテンツに追加された1つの大きな文字列の代わりに、私は配列構築方法を使って物事を片付けました、しかし複数の$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);
    }
}
4
Evan Mattson

最初にURLエンコードされる必要があり、2番目にget_thumbnail()とは完全なimgタグを表示するため、間違ったURLを作成しています。そして第三にあなたはそれを反響しています。

とにかくこれを試して

/* 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>';
2
Bainternet

あなたの問題は単純なphp構文です。あなたは変数の代入の中で開きと閉じのphpブレース<?php?>を使うことができず、別々の文字列と変数はドット.によって連結されなければなりません

例としてG +とFacebookのボタンに従ってください。私はまたあなたがあなたの結果をreturnしたいと思うと思いますか?

0
Milo