web-dev-qa-db-fra.com

Intégration Pinterest à l'aide de functions.php

J'utilise un thème pour construire un portefeuille.

Je voudrais ajouter un "bouton" Épingler "dans le fuctions.php: Facebook, Google+ et Twitter ont été créés, mais le pinterest ne fonctionnera pas.

Impossible de trouver le mauvais code. Ceci est mon code:

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

Merci

2
ogni

Il y avait plusieurs erreurs dans votre code. Le plus gros problème était que la fonction n'avait même pas de crochet de fermeture, mais nous pouvons probablement supposer qu'elle n'a tout simplement pas été copiée dans votre message, sinon rien n'aurait fonctionné pour vous.

Ceci est un filtre sur le contenu non?

Il semble que vous souhaitiez ajouter ces partages après le contenu de votre message. Si c'est le cas, vous aurez également besoin de cette ligne:

add_filter('the_content','share_this');

En dehors de cela, vous essayiez de fermer les balises php et de les ouvrir dans votre déclaration où vous ajoutez des données de chaîne à la variable $content. Vous vouliez également faire écho aux données et utilisé des fonctions pour faire écho au lieu de retourner (par exemple, the_title echos au lieu de get_the_title qui renvoie la valeur).

Au lieu d'une grosse chaîne ajoutée à votre contenu, j'ai nettoyé les choses en utilisant une méthode de construction de tableaux, mais plusieurs $shares .= auraient également fonctionné.

Cela devrait fonctionner même si je ne l'ai pas testé.

<?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

Vous construisez l'URL Faux, car il doit d'abord être codé par l'url et 2e quelle est get_thumbnail() affiche-t-il le tag img complet? et 3ème vous faites écho.

de toute façon essayer ceci

/* 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

Votre problème est la syntaxe php simple. Vous ne pouvez pas utiliser les accolades php d'ouverture et de fermeture <?php et ?> au sein d'une affectation de variable. Des chaînes et des variables distinctes doivent être concaténées par un point ..

Suivez les boutons G + et Facebook comme exemples. Je suppose aussi que vous voulez return vos résultats?

0
Milo