[英]Wordpress PHP - Add the_permalink inside a variable then echo
[英]store the PERMALINK in a PHP variable
我有这个代码来计算我帖子中所有社交网站的份额。 代码的问题是永久链接是静态的。
如果您注意到,我使用get_permalink();
将永久链接存储在$myurl
变量中get_permalink();
,代码的问题是,一旦我改变链接“ http://www.bendaggers.com/how-to-write-a-killer-resume-that-lands-an-interview/ ”,它给了我吨错误如:
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>";
?>
要添加, get_permalink
函数将返回活动页面的当前URL。 我这样做是为了将它整合到我的wordpress网站并显示确切的股票数量(facebook,twitter,linkedin和pinterest)。 上面的代码不会返回当前页面的URL。 这是静态的。
对我来说,这看起来像是一些简单的疏忽。
第一个是$url
编码一个不存在的变量。 目前你有
$myurl = get_permalink();
$url = urlencode($url);
......应该是什么时候
$myurl = get_permalink();
$url = urlencode($myurl);
第二个是没有定义名为twitter_tweet_count
, facebook_like_share_count
或pinterest_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>";
?>
阅读您在评论中给出的最后一个错误代码:403(禁止访问)
所以我继续使用facebook API文档并发现: 链接到docs
可能您请求的某个操作可能会抛出错误。 这可能是因为,例如,您没有权限执行请求的操作。
在此引用后面的示例中,我们可以看到请求的403响应代码。
好吧,我可以从导航器和PHP file_get_contents函数访问此页面。 所以也许你被列入黑名单,或者有一些配额......如果问题仍然存在,你应该联系Facebook,了解为什么你的服务器无法访问这些信息。
{
"id": "http://alphaomega.bendaggers.com/2014/10/25/legendary-moments-of-barney-stinson/",
"shares": 4
}
希望它的帮助:)
有两种方法可以避免此错误。
如果要打开包含特殊字符(如空格)的URI,则需要使用urlencode()对URI进行编码。
urlencode - This function is convenient when encoding a string to be used in a query part of a URL, as a convenient way to pass variables to the next page.
看看下面的代码
$myurl = get_permalink();
$url = urlencode($url);
file_get_contents()
使用fopen()
包装器,因此限制它通过php.ini
的allow_url_fopen
选项访问URL。
你可以尝试卷曲。 试试这个链接 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.