Подтвердить что ты не робот

Хранить PERMALINK в переменной PHP

У меня есть этот код, чтобы считать все социальные сайты в моих сообщениях. Проблема с кодом - постоянная ссылка статична.

Если вы заметили, я сохранил постоянную ссылку в переменной $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-адрес текущей страницы. Это статично.

4b9b3361

Ответ 1

Это выглядит как несколько простых оплошностей для меня.

Во-первых, $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>";

?>

Ответ 2

Прочтите последний код ошибки, который вы указали в комментариях: 403 (запрет доступа)

Итак, я пошел в API-интерфейс facebook API и нашел это: Ссылка на документы

Возможно, что одна из ваших запрошенных операций может вызвать ошибку. Это может быть связано с тем, что, например, у вас нет разрешения на выполнить запрошенную операцию.

В примере, следующем за этой цитатой, мы можем увидеть код ответа 403 для запроса.

Ну, у меня есть доступ к этой странице из моего навигатора и из функции PHP file_get_contents. Возможно, вы попали в черный список или есть некоторые квоты... Если проблема не устранена, вы должны связаться с Facebook, чтобы узнать, почему ваш сервер не имеет доступа к этой информации.

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

Надеюсь, что это помогло:)

Ответ 3

Существует два способа избежать этой ошибки.

1-й метод

Если вы открываете URI со специальными символами, например пробелами, вам нужно закодировать URI с помощью urlencode().

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(), поэтому он ограничен доступом к URL-адресам через опцию allow_url_fopen в php.ini.

Должен ли я разрешать 'allow_url_fopen' в PHP?

Третий метод

Вы можете попробовать закрутить. Попробуйте ссылка.