【サンプルコード付き】LivedoorブログのLINE更新通知機能をWordPressでも使えるようにする

みなさんこんにちは。

今回はいつもとは違ってWordpress界隈に貢献をしようと思い、この記事を作成しました。

 

LivedoorブログのLINE更新通知機能をWordPressでも使えるようにする

本記事では、Livedoorブログでよく使われているLINEの更新通知機能をWordPressでも使えるようにする方法を解説していきます。

 

Livedoorブログでよく使われているLINEの更新通知機能

Livedoorブログを読んでいる方しか知らないと思うので一応解説しておくと、
読者が「更新通知を受け取るボタン」を押すと新しい記事が更新された時に読者のLINEに通知が届きます。

 

 

この機能、結構便利でWordPressもLINE BLOG Readerと連携できればいいのですが、現時点ではできないっぽい・・・?

 

どうしても使いたい!!
Livedoorの更新通知機能を使えばいいんだ!!

 

と言うことで、LivedoorのLINE更新通知機能をWordPressでも使えるようにします。

 

はじめに

今回紹介する方法は中級者~上級者用です。
(初級=プラグインしか使えない
中級=ある程度カスタマイズできる(PHPが理解できる)
上級者=プラグインが作れる)

 

少し調べたところ、IFTTT&Gmailを使う方法もあるようですが、
外部サービスを必要以上に使うのは面倒くさいので今回紹介するのはLivedoorとWordpressで完結します。

 

LINE通知機能をWordPressで使えるようにする手順

仕組み的にはこんな感じ。

WordPressで記事を投稿する

所持しているLivedoorブログに記事のタイトル・本文の一部が投稿され、LINE通知される

うん。シンプル!!

 

では、やっていきましょう!

 

中級者~上級者向けの記事となっている為、専門知識がない方はできる限りやめておきましょう。
サイトがぶっ壊れても対処や復元ができる方のみ行ってください。

 

LivedoorのAPI情報の取得

LivedoorのAtomPub APIを使って記事を自動更新します。

よくわからない人も私の記事通りにやればいけるはず・・・。

 

まず、記事更新される用のLivedoorブログを作成しましょう。

作成できたら、ブログ設定にある「API Key」をクリック。

 

表示された「ルートエンドポイント」と「AtomPub用パスワード」を適当な場所にメモっておきましょう。
(あとから見に来てもOK)

 

WordPress側のセットアップ

次に、WordPressがインストールされているサーバーに必要なファイルを用意していきます。

  • HTTP_Request2
  • Net_URL2

それぞれ、以下のURLからダウンロードして下さい。

HTTP_Request2(https://pear.php.net/package/HTTP_Request2/download)

Net_URL2(https://pear.php.net/package/Net_URL2/download)

 

ダウンロードしたファイル達をWordPressがインストールされているサーバーで展開します。

子テーマフォルダの中にlivedoorフォルダを作成し、
その中にassetsフォルダとlivedoor_autopost.phpファイルを作ってください。

 

作成したassetsフォルダ内にHTTP_Request2とNet_URL2を移動させます。

※assets内のHTTPフォルダはHTTP_Request2に入っているHTTPフォルダをまるまま持ってきてください。
※assets内のNetフォルダはNet_URL2に入っているNetフォルダをまるまま持ってきてください。

 

詳しくはこんな感じ↓

xxxx-child(子テーマフォルダ)
├functions.php(元からある)
└livedoor(作る)
   ├assets(作る)
   │  ├HTTP(展開して持ってくる)
   │  └Net(展開して持ってくる)
   │
   └livedoor_autopost.php(作る)

 

 

次に、livedoor_autopost.phpファイル作成し、以下のコードをコピペじます。

<?php

function livedoor_notice($post_info)
{
    $path = dirname(__FILE__) . '/assets';
    set_include_path(get_include_path() . PATH_SEPARATOR . $path);
    require_once 'HTTP/Request2.php';
    $id = '[自分のlivedoorID]';
    $rootEndPoint = '[先程メモしたルートエンドポイント]';
    $key = '[先程メモしたAtomPub用パスワード]';
    $url = "https://livedoor.blogcms.jp/atom/blog/{$id}/article";
    $title = $post_info['title'];
    $description = "<a href='{$post_info['url']}'>ここをクリックして記事を読む</a><script>location.href='{$post_info['url']}';</script>";
    $description2 = "<a href='9ketsuki.info'>9ketsuki.info</a>";
    $category = 'notify';
    $created = date('Y-m-d\TH:i:s\Z');
    $nonce = pack('H*', sha1(md5(time())));
    $pass_digest = base64_encode(pack('H*', sha1($nonce . $created . $key)));
    $wsse =
        'UsernameToken Username="' . $id . '", ' .
        'PasswordDigest="' . $pass_digest . '", ' .
        'Nonce="' . base64_encode($nonce) . '", ' .
        'Created="' . $created . '"';
    $rawdata =
        '<?xml version="1.0" encoding="utf-8"?>' .
        '<entry xmlns="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:blogcms="http://blogcms.jp/-/spec/atompub/1.0/">' .
        '<title>' . $title . '</title>' .
        '<category term="' . $category . '" />' .
        '<blogcms:source>' .
        '<blogcms:body><![CDATA[' . $description . ']]></blogcms:body>' .
        '<blogcms:more><![CDATA[' . $description2 . ']]></blogcms:more>' .
        '</blogcms:source>' .
        '</entry>';
    $headers = array(
        'X-WSSE: ' . $wsse,
        'Expect:',
    );
    try {
        $req = new HTTP_Request2();
        $req->setUrl($url);
        $req->setMethod(HTTP_Request2::METHOD_POST);
        $req->setHeader($headers);
        $req->setBody($rawdata);
        $response = $req->send();
    } catch (HTTP_Request2_Exception $e) {
        die($e->getMessage());
    } catch (Exception $e) {
        die($e->getMessage());
    }
}
 

コード内の[自分のlivedoorID]、[先程メモしたルートエンドポイント]、[先程メモしたAtomPub用パスワード] の箇所は自分のアカウントに合わせて書き換えてください。

 

これで環境は完成したので、あとはfunctions.phpに以下のコードを追記して下さい。

function send_livedoor($post_id) {
	require_once('livedoor/livedoor_autopost.php');
    	$post = get_post($post_id);
    	$send_title = $post->post_title;
	$url = get_permalink($post_id);
	$post_info = [
		'url' => $url,
		'title' => $send_title
	];
	livedoor_notice($post_info);
    return;
}
add_action( 'publish_post', 'send_livedoor', 1 ,6); 

 

これでWordPressから記事が投稿されると

functions.php内にあるsend_livedoorが実行され、
Livedoorブログにも自動的にWordpressの記事のURLリンクが記載された記事が投稿されるようになりました。

 

あとは、Wordpressの記事上や記事下にLINEで通知を受け取るボタンとリンクを設置するだけです!

LINEで通知を受け取るボタン用のリンクは自分のLivedoor側のサイトにアクセスしてリンクをコピーしてください。

 

では、お疲れ様でした~!!

管理人がオススメするお得な情報

1,000円→無料

登録時にもらえる1000円分のポイントで毎日オリパが引ける。

課金するとさらにお得な損しないオリパも引けるので激アツ!!

 

3,000円→無料

AudibleはAmazonが出している本を聴くサービス。

作業をしながら本を読む(聴く)事が出来るので、効率良く情報のインプットが可能に。

 

1,960円→無料

漫画・小説・雑誌などが読み放題のKindleUnlimited。

即解約しても、期間中は利用できるので心配な方は即解約でもOK。