Quelle est la meilleure méthode pour récupérer la balise de titre d'une page externe à l'aide de l'API http?
L'extrait ci-dessous aura le corps, mais je ne trouve pas la bonne documentation pour savoir comment obtenir le tag. : /
$url = 'http://wordpres.org';
$response = wp_remote_get( $url );
if( is_wp_error( $response ) ) {
echo 'Something went wrong!';
} else {
print wp_remote_retrieve_body( $response );
}
Edit: Cet extrait de code reçoit à la fois la capture d'écran et le titre d'une page externe (Merci encore @Bainternet). Avec un peu de modification, cela pourrait être un moyen facile d’afficher le format de publication de lien.
<?php
$content = get_the_content();
$url = strip_tags($content); //assumes only a url is in the_content
$width = '150';
$cleanurl = urlencode(clean_url($url));
$fullurl = 'http://s.wordpress.com/mshots/v1/' . $cleanurl . '?w=' . $width;
// return title tag of an external page
// http://wordpress.stackexchange.com/questions/19424/how-to-get-title-tag-of-an-external-page-with-http-api
function get_page_title($url){
if( !class_exists( 'WP_Http' ) )
include_once( ABSPATH . WPINC. '/class-http.php' );
$request = new WP_Http;
$result = $request->request( $url );
if( is_wp_error( $result ) )
return false;
if( preg_match("#<title>(.+)<\/title>#iU", $result['body'], $t)) {
return trim($t[1]);
} else {
return false; }
}
$title = get_page_title($url);
echo '<div class="grid_4 alpha"><a href="' . $url . '"><img src="' . $fullurl . '" width="' . $width .'px" /></a></div>';
echo '<div class="grid_10 omega"><h3>'; if ($title !== false){ echo $title;} echo '</h3><p>' . $content . '</p></div>';
echo '<div class="clear"></div>';
?>
voici une fonction que j'ai pour cela:
function get_page_title($url){
if( !class_exists( 'WP_Http' ) )
include_once( ABSPATH . WPINC. '/class-http.php' );
$request = new WP_Http;
$result = $request->request( $url );
if( is_wp_error( $result ) )
return false;
if( preg_match("#<title>(.+)<\/title>#iU", $result['body'], $t)) {
return trim($t[1]);
} else {
return false;
}
}
Utilisation:
$title = get_page_title('http://www.google.com');
if ($title !== false){ echo $title;}
Eh bien, vous ne voulez pas print
la réponse, vous voudrez la stocker dans une variable. Ensuite, vous pouvez utiliser un RegEx pour trouver le texte dans <title>
et </title>
.
preg_match( $pattern, wp_remote_retrieve_body( $response ), $matches );
Votre variable $matches
sera alors un tableau. Utilisez simplement $matches[0]
et vous aurez la balise de titre.
Ce modèle extraira <title>Your Title</title>
de la page:
$pattern = '/<title>([^>]*)<\/title>/';
Je vous laisse le soin de supprimer les <title>
et </title>
.