如何在循环外部使用get_permarink()?

时间:2015-01-31 作者:Sp0cK

我已经为这个问题挣扎了一段时间,虽然有一些关于这个主题的信息,但我不知道如何实现它。我的问题是关于共享当前页面。

我正在使用<script type="text/javascript" charset="utf-8" >var bShareOpt = {url: "<?php echo get_permalink(); ?>"};</script> 它显示最后一页而不是当前页的永久链接。如果我添加post\\u id号<?php echo get_permalink(2926); ?> 它显示了正确的立柱。

之所以会发生这种情况,是因为它在循环外被调用。

使用get_queried_object_idget_queried_object 显然是另一种选择。

但不幸的是,我的PHP知识非常有限,无法将各个部分粘合在一起。非常感谢您的帮助!

我想补充:永久链接设置是:网站。com/%postname%。html

主页上的每个社交图标都应该共享该特定帖子。我在该网站的英文版上也做了同样的事情,Facebook的Likes很有魅力。现在,我正试图在中国社会偶像身上实现同样的目标。。。

loop.php 在第30行,我调用get\\u permalink()函数,如下所示:

<?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 个回复
SO网友:Adal

既然你打电话来了get_permalink() 在循环之外,您需要定义post$id参数。

你可以access the post ID outside of the loop 通过调用全局$post对象,然后引用其ID值。

因此,您的代码现在如下所示:

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

SO网友:gtamborero

我解决这个问题的唯一方法是使用PHP(而不是wordpress函数):

<?php if($_SERVER[ \'REQUEST_URI\' ] == "/my-url/"){ ?>
   Do something if the user is in the "my-url" page
<?php } ?>

结束

相关推荐

Custom taxonomy template loop

我知道这个问题问得很多,但我找不到一个适合我的答案。我制作了一些自定义帖子类型和一些自定义分类法。我有自定义的帖子类型Products 并与分类法相联系Product Categories. 当用户在产品页面上单击产品类别时,我想向他显示该特定类别中的所有产品。问题是,产品类别将约为50种。现在我发现的唯一一件事就是把这个<?php $loop = new WP_Query( array( \'post_type\' => \'all_products\', \'posts_per_page\