将永久链接存储在 PHP 变量中

2022-08-30 21:20:49

我有这个代码来计算我帖子中的所有社交网站共享。代码的问题是永久链接是静态的。

如果你注意到,我使用变量存储了永久链接,代码的问题是一旦我更改链接“http://www.bendaggers.com/how-to-write-a-killer-resume-that-lands-an-interview/”,它就会给我大量的错误,例如:$myurlget_permalink();

file_get_contents(http://graph.facebook.com/?id=$myurl):打开流失败:HTTP请求失败!

这是我的代码:

$myurl = get_permalink();
$url = urlencode($url);

$facebook_like_share_count = function ( $url ) {
    $api = file_get_contents( 'http://graph.facebook.com/?id=' . $url );
    $count = json_decode( $api );
    return $count->shares;
};


$twitter_tweet_count = function ( $url ) {
    $api = file_get_contents( 'https://cdn.api.twitter.com/1/urls/count.json?url=' . $url );
    $count = json_decode( $api );
    return $count->count;
};


$pinterest_pins = function ( $url ) {
    $api = file_get_contents( 'http://api.pinterest.com/v1/urls/count.json?callback%20&url=' . $url );
    $body = preg_replace( '/^receiveCount\((.*)\)$/', '\\1', $api );
    $count = json_decode( $body );
    return $count->count;
};




echo twitter_tweet_count( 'http://www.bendaggers.com/how-to-write-a-killer-resume-that-lands-an-interview/' );

echo "<br>";

echo facebook_like_share_count( 'http://www.bendaggers.com/how-to-write-a-killer-resume-that-lands-an-interview/' );

echo "<br>";

echo pinterest_pins( 'http://www.bendaggers.com/how-to-write-a-killer-resume-that-lands-an-interview/' );

echo "<br>";


?>

若要添加,该函数返回活动页的当前 URL。我这样做是为了将其集成到我的wordpress网站上,并显示确切的股票数量(facebook,twitter,LinkedIn和pinterest)。上面的代码不返回当前页面的 URL。它是静态的。get_permalink


答案 1

对我来说,这看起来像是一些简单的疏忽。

第一种是编码不存在的变量。目前你有$url

$myurl = get_permalink();
$url = urlencode($url);

...当它可能应该是

$myurl = get_permalink();
$url = urlencode($myurl);

第二种是没有定义名为 、 或 的函数。相反,您已使用匿名函数将它们分配给变量以确定其值。twitter_tweet_countfacebook_like_share_countpinterest_pins

从本质上讲,您应该能够更改此设置

echo twitter_tweet_count( 'http://www.bendaggers.com/how-to-write-a-killer-resume-that-lands-an-interview/' );

...到这个

echo $twitter_tweet_count( 'http://www.bendaggers.com/how-to-write-a-killer-resume-that-lands-an-interview/' );

...唯一的区别是文本之前。$twitter_tweet_count

修复后,您应该能够进一步组合这两个修复程序,最终产品看起来像这样(使用动态值):$url

<?php

$myurl = get_permalink();
$url = urlencode($myurl);

$facebook_like_share_count = function ( $url ) {
    $api = file_get_contents( 'http://graph.facebook.com/?id=' . $url );
    $count = json_decode( $api );
    return $count->shares;
};

$twitter_tweet_count = function ( $url ) {
    $api = file_get_contents( 'https://cdn.api.twitter.com/1/urls/count.json?url=' . $url );
    $count = json_decode( $api );
    return $count->count;
};

$pinterest_pins = function ( $url ) {
    $api = file_get_contents( 'http://api.pinterest.com/v1/urls/count.json?callback%20&url=' . $url );
    $body = preg_replace( '/^receiveCount\((.*)\)$/', '\\1', $api );
    $count = json_decode( $body );
    return $count->count;
};

echo $twitter_tweet_count( $url );

echo "<br>";

echo $facebook_like_share_count( $url );

echo "<br>";

echo $pinterest_pins( $url );

echo "<br>";

?>

答案 2

阅读您在评论中给出的最后一个错误代码:403(禁止访问)

所以我去了Facebook API文档,发现了这个:链接到文档

您请求的某个操作可能会引发错误。这可能是因为,例如,您没有执行所请求操作的权限。

在此引用后面的示例中,我们可以看到对请求的 403 响应代码。

好吧,我可以从我的导航器和PHP访问此页面file_get_contents功能。所以也许你被列入黑名单,或者有一些配额...如果问题仍然存在,您应该联系Facebook,了解您的服务器无法访问此信息的原因。

{
   "id": "http://alphaomega.bendaggers.com/2014/10/25/legendary-moments-of-barney-stinson/",
   "shares": 4
}

希望它能帮助:)


推荐