web-dev-qa-db-fra.com

Comment utiliser get_permalink () en dehors de la boucle?

Cela fait un moment que je me bats avec cette question et, même s'il existe quelques informations à ce sujet, je ne sais pas comment la mettre en œuvre. Ma question concerne le partage de la page actuelle.

J'utilise <script type="text/javascript" charset="utf-8" >var bShareOpt = {url: "<?php echo get_permalink(); ?>"};</script> qui montre le permalien de la dernière page au lieu de la page actuelle. Si j'ajoute le post_id number <?php echo get_permalink(2926); ?>, il affiche le message correct.

Cela se produit car il est appelé en dehors de la boucle.

Utiliser get_queried_object_id ou get_queried_object est apparemment une autre option.

Mais malheureusement, ma PHP connaissance est très limitée pour pouvoir coller les morceaux ensemble. J'apprécie toute aide!

J'aime ajouter: Les paramètres de Permalink sont les suivants: website.com/%postname%.html

Chaque icône sociale sur la page d'accueil doit partager cette publication spécifique. J'ai fait de même sur la version anglaise de ce site Web avec Facebook Likes, qui fonctionne à merveille. Maintenant, j'essaie d'atteindre le même objectif avec les icônes sociales chinoises ...

Sur loop.php sur la ligne 30, j'appelle la fonction get_permalink () en tant que telle:

<?php if ( ICL_LANGUAGE_CODE=='zh-hans' ) : ?>
    <script type="text/javascript" charset="utf-8" >
        var bShareOpt = {url: "<?php echo get_permalink( $postid ); ?>"};
    </script>
    <div class="social-content">
        <div class="bshare-custom">
            <div class="bsPromo bsPromo2"></div>
            <a title="分享到微信" class="bshare-weixin" href="javascript:void(0);"></a>
            <a title="分享到新浪微博" class="bshare-sinaminiblog" href="javascript:void(0);"></a>
            <a title="分享到QQ空间" class="bshare-qzone"></a>
            <a title="更多平台" class="bshare-more bshare-more-icon more-style-addthis"></a>
            <span class="BSHARE_COUNT bshare-share-count" style="float: none;">19.5K</span>
        </div>
    </div>
<?php endif; ?>
2
Sp0cK

Puisque vous appelez get_permalink () en dehors de la boucle, vous devez définir le paramètre post $ id.

Vous pouvez accéder à l'ID de publication en dehors de la boucle en appelant l'objet global $ post, puis en référant sa valeur d'ID.

Donc, votre code ressemblerait maintenant à ceci:

<?php if ( ICL_LANGUAGE_CODE=='zh-hans' ) : 

    global $post;
    $postid = $post->ID;

    ?>

    <script type="text/javascript" charset="utf-8" >
        var bShareOpt = {url: "<?php echo get_permalink( $postid ); ?>"};
    </script>
    <div class="social-content">
        <div class="bshare-custom">
            <div class="bsPromo bsPromo2"></div>
            <a title="分享到微信" class="bshare-weixin" href="javascript:void(0);"></a>
            <a title="分享到新浪微博" class="bshare-sinaminiblog" href="javascript:void(0);"></a>
            <a title="分享到QQ空间" class="bshare-qzone"></a>
            <a title="更多平台" class="bshare-more bshare-more-icon more-style-addthis"></a>
            <span class="BSHARE_COUNT bshare-share-count" style="float: none;">19.5K</span>
        </div>
    </div>
<?php endif; ?>
1
Adal