GitHub API v4 を使って、WordPress で GitHub のデータを取得する方法です。
参考: GitHub API v4をPHPから呼んでみる
v4 では GraphQL のクエリを含んだ JSON を POST する形になります。
https://developer.github.com/v4/
GraphQL のクエリ
取得したいデータに合わせて GraphQL のクエリを作成しましょう。
GitHub GraphQL API で、実際にクエリ作って確認することができます。
僕は、release データからパッケージのダウンロード URL を取得したかったので、こんな感じで作りました。
{
repository(owner: "getshifter", name: "shifter-github-hosting-plugin-sample") {
releases(last: 1){
edges {
node {
releaseAssets(last: 1) {
nodes {
downloadUrl
url
}
}
url
tagName
isPrerelease
publishedAt
updatedAt
}
}
}
}
}
結果
{
"data": {
"repository": {
"releases": {
"edges": [
{
"node": {
"releaseAssets": {
"nodes": [
{
"downloadUrl": "https://github.com/getshifter/shifter-github-hosting-plugin-sample/releases/download/1.0.1/shifter-github-hosting-plugin-sample.zip",
"url": "https://github-production-release-asset-2e65be.s3.amazonaws.com/205090003/f64b1a80-cd47-11e9-81c2-8e04f2876f81?....."
}
]
},
"url": "https://github.com/getshifter/shifter-github-hosting-plugin-sample/releases/tag/1.0.1",
"tagName": "1.0.1",
"isPrerelease": false,
"publishedAt": "2019-09-02T06:07:38Z",
"updatedAt": "2019-09-02T06:07:38Z"
}
}
]
}
}
}
}
最終リリースパッケージをダウンロードするための URL が取得できたよー
トークンを取得する
API v4 を叩くには、個人アクセストークンを取得する必要があります。
アクセストークンの取得方法は、公式ドキュメントを参考に
コマンドライン用の個人アクセストークンを作成する
POST する
WordPress には wp_remote_post() という関数があるので、それを使いましょう。
$query = '__GRAPHQL_QUERY_HERE__';
$token = '__GITHUB_ACCESS_TOKEN_HERE__';
$options = [
'method' => 'POST',
'headers' => [
'Authorization' => 'bearer ' . $token,
'Content-type' => 'application/json; charset=UTF-8',
],
'body' => json_encode(['query' => $query]),
];
$res = wp_remote_post( 'https://api.github.com/graphql', $options);
if (200 !== wp_remote_retrieve_response_code( $res )) {
return new \WP_Error(
wp_remote_retrieve_response_code( $res ),
wp_remote_retrieve_body( $res )
);
}
$body = json_decode( wp_remote_retrieve_body( $res ) );
return $body;
簡単ですね。
実際にこのコードを使って作った WordPress プラグインが以下になります。
shifter-github