the tag permalink page link get_permalink php variables

tag - almacenar el PERMALINK en una variable de PHP



wordpress get permalink url (3)

Tengo este código para contar todos los sitios sociales compartidos en mis publicaciones. El problema con el código es que el enlace permanente es estático.

Si se dio cuenta, $myurl el permalink en la variable $myurl usando get_permalink(); , el problema con el código es una vez que cambio el enlace " http://www.bendaggers.com/how-to-write-a-killer-resume-that-lands-an-interview/ ", me da toneladas de errores tales como:

file_get_contents ( http://graph.facebook.com/?id= $ myurl): no se pudo abrir la secuencia: ¡Error en la solicitud HTTP!

Aquí está mi código:

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

Para agregar, la función get_permalink devuelve la URL actual de la página activa. Estoy haciendo esto para integrarlo en mi sitio web de wordpress y mostrar el número exacto de acciones (facebook, twitter, linkedin y pinterest). El código anterior no devuelve la URL de la página actual. Es estático.


Esto me parece un par de simples descuidos.

La primera es que $url está codificando una variable que no existe. Actualmente tienes

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

... cuando debería ser

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

La segunda es que no hay funciones definidas llamadas twitter_tweet_count , facebook_like_share_count o pinterest_pins . En su lugar, les ha asignado variables que utilizan funciones anónimas para determinar su valor.

Esencialmente deberías poder cambiar esto

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

... a esto

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

... con la única diferencia es el $ antes del texto twitter_tweet_count .

Una vez que se solucione, deberías poder combinar ambas correcciones, con el producto final luciendo así (usando el valor dinámico de $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>"; ?>


Hay dos métodos para evitar este error.

1er método

Si está abriendo un URI con caracteres especiales, como espacios, debe codificar el URI con 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.

Echa un vistazo al código de abajo

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

2do método

file_get_contents() utiliza los envoltorios fopen() , por lo tanto, no puede acceder a las URL a través de la opción allow_url_fopen dentro de php.ini .

¿Debo permitir ''allow_url_fopen'' en PHP?

3er método

Puedes probar el rizo. Prueba este link .


Lea el último código de error que dio en los comentarios: 403 (prohibir el acceso)

Así que fui a la documentación de la API de Facebook y encontré esto: enlace a documentos

Es posible que una de sus operaciones solicitadas arroje un error. Esto podría deberse a que, por ejemplo, no tiene permiso para realizar la operación solicitada.

En el ejemplo que sigue a esta cita, podemos ver un código de respuesta 403 a la solicitud.

Bueno, tengo acceso a esta página desde mi navegador y desde la función PHP file_get_contents. Quizás esté en la lista negra, o existen algunas cuotas ... Si el problema persiste, debe comunicarse con Facebook para saber por qué su servidor no tiene acceso a esta información.

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

Espero que haya ayudado :)