リンクをカードにするプラグインを作ろう!(3)cURLでサイトの内容を取得する

PHP

リンク先のタイトルと概要文を取得します。

前回まで

プラグインのひな型を作りました。

[link url=”https://popozure.info/20180810/13219″]

今回もコードを書いていく

URLパラメータを取得する

ショートコードが書かれたときに呼ばれるshortcodeにコードを書いていきます。

第一パラメータには指定されたパラメータが連想配列で入ってきます。

$url に urlパラメータで指定された文字列を入れてみましょう。

[php title=”popo-blogcard.php” start-line=”11″ mark=”6″]class popo_blogcard {
function __construct() {
add_shortcode(‘blogcard’, array($this, ‘shortcode’ ) );
}
function shortcode($opt , $content = null ) {
$url = $opt[‘url’];
}
}
$popo_blogcard = new popo_blogcard;[/php]

cURLでアクセスする

cURLという機能を使ってリンク先のHTMLを取得します。

[php title=”popo-blogcard.php” start-line=”15″ mark=”3-12″] function shortcode($opt , $content = null ) {
$url = $opt[‘url’];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt($ch, CURLOPT_TIMEOUT, 8 );
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true );
curl_setopt($ch, CURLOPT_MAXREDIRS, 8 );
curl_setopt($ch, CURLOPT_AUTOREFERER, true );
curl_setopt($ch, CURLOPT_COOKIESESSION, true );
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false );
$html = curl_exec($ch);
curl_close($ch );
}[/php]

cURLがエラーだったときの処理

エラーのときはタイトルも概要文も取得できないので、タイトルにURLを入れておきます。

[php title=”popo-blogcard.php” start-line=”15″ mark=”12-16″] function shortcode($opt , $content = null ) {
$url = $opt[‘url’];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt($ch, CURLOPT_TIMEOUT, 8 );
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true );
curl_setopt($ch, CURLOPT_MAXREDIRS, 8 );
curl_setopt($ch, CURLOPT_AUTOREFERER, true );
curl_setopt($ch, CURLOPT_COOKIESESSION, true );
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false );
$html = curl_exec($ch);
if (curl_errno($ch ) ) {
$site_name = ”;
$title = $url;
$excerpt = ”;
}
curl_close($ch );
}[/php]

これで$htmlにリンク先サイトのHTMLが取得できました。

ここからタイトルや概要文を抜粋します。

今回のコード

今回はここまでです。

[php title=”popo-blogcard.php”]次回は・・・

今回取得したHTMLからタイトルと概要文を抜粋します。

[link url=”https://popozure.info/20180812/13260″]

では、この辺で。(^-^)o

[amzn-link asin=”4774187062″][amzn-link asin=”B00M939Y0I”][amzn-link asin=”4798143774″][amzn-link asin=”4797393157″][amzn-link asin=”B01NCXFWIZ”]

コメント

タイトルとURLをコピーしました