‘cURL error 60’エラーが出たときの対処法 ‘cURL error 60: SSL certificate problem: unable to get local issuer certificate’

cURLを使用したプログラムでhttpsのサイトにアクセスしたとき、下記の例外が発生しました。
この問題を解消するために、調べた事・行ったことののメモを書いておきます。

環境: Windows10, PHP7.0.14, GuzzleHttp経由でcURLライブラリを利用

Fatal error: 
Uncaught exception 'GuzzleHttp\Exception\RequestException' with message 
'cURL error 60: SSL certificate problem: 
  unable to get local issuer certificate

エラーの理由


このエラーは、SSL暗号化されているhttpsのサイトにアクセスしようとした際にそのサーバが信頼できるか否かの証明書(ca証明書)が取得できなかった時に発生します。

行ったこと


  • SSLの認証情報をファイルに保存する
    下記のURLの出力結果をダウンロードし、適当なファイルにに保存します。
    今回は、C:\path\to\cacert.pemに保存したものとして説明します。
    http://curl.haxx.se/ca/cacert.pem

  • php.iniを書き換える
    curlのセクションに、コメントアウトされたcurl.cainf定義があるので、ここに先ほどのファイルを指定します


[curl]
curl.cainfo = "C:\path\to\cacert.pem"

  • php.iniを書き換えたくない/変更できない場合
    phpプログラム上に以下のような形で証明書ファイルの場所を指定しても大丈夫です。

$http = new GuzzleHttp\Client([
    'verify' => 'c:\path\to\cacert.pem'
];

Google Client SDKを使っているときにこのエラーが出たときは…


Google Client SDKを使っているときは、先ほど作った$httpを下記の形で指定できるらしいです。
(実際に使っていないので未検証の情報です)

$google = new Google_Client;
$google->setHttpClient($http);

参考:StackOverflow.comでの情報


StackOverflow.comによると、上記の処理を行ったにもかかわらず、エラーが解消されない場合は下記のチェックを行うとよいそうです。
http://stackoverflow.com/questions/29822686/curl-error-60-ssl-certificate-unable-to-get-local-issuer-certificate

php.iniファイルにopenssl.cafileのパラメータが指定されているか
php.iniファイルにcurl.cainfoのパラメータが指定されているか

Red Hat, CentOS, Fedoraを使っている場合...
  /etc/pki/tls/certs/ca-bundle.crtがあれば
  このファイルを見に行くので、ファイルが存在しているか確認する。

Ubuntu, Debianを使っている場合...
  /etc/ssl/certs/ca-certificates.crtがあればこのファイルを見に行くので...(以下同様)

FreeBSDの場合
  /usr/local/share/certs/ca-root-nss.crtがあれば...

OS Xの場合
  /usr/local/etc/openssl/cert.pemがあれば...

Windowsの場合
  C:\windows\system32\curl-ca-bundle.crt があれば...
  C:\windows\curl-ca-bundle.crt があれば...

php.iniファイルにopenssl.cafileやcurl.cainfoのパラメータが正しくセットできているかは、下記のプログラムで確認できます。一台のPCに複数バージョンのPHPがインストールされている場合は、念のために確認しておいた方が良いです。

echo "openssl.cafile: ", ini_get('openssl.cafile'), "\n";
echo "curl.cainfo: ", ini_get('curl.cainfo'), "\n";

[VSCode]VisualStudioCode上で素早く数式の計算を行う方法

VisualStudio Codeを使用している時、ちょっとした計算を素早く行う方法のTipsです。
PowerShellを使う方法と、emmetのショートカット機能を使う方法があります

PowerShellを使用した数式の計算


Ctrl+@で、PowerShellを起動します。


ここで数式を入力してEnterすれば計算結果が出力されます。とても簡単ですね。


emmet(zencoding)のショートカットを使用した数式の計算


.htmlや.phpファイルを開いているときは、emmetのショートカットを使用してエディタ内で計算できます。

数式エディタ内に記入し、範囲選択します。


Ctrl+Shit+P -> "math"と入力してEnterキーを順に押します。


すると、数式が計算結果に変わります。
もちろんCtrl-zで計算前の数式に戻すこともできます。

[WordPress]DBが分かる人に$wp_queryと$wp_the_queryの違いを説明する

WordPressでは、クエリ結果(≒表示すべき記事の情報)を、$wp_queryと$wp_the_queryの2つの変数で管理しています。
この2つの違いは下記のとおりです。

メインクエリの結果:$wp_the_query
現在処理しているクエリ結果: $wp_query

具体的には以下のプログラムのコメントのような感じで、$wp_queryの値が変わっていきます。

// カテゴリ1の記事最新5件を検索
// この時点では、$wp_the_queryと$wp_queryの内容は同じ
query_post('cat=1&order=DES&number=1'); 

// 取得した記事をすべて処理するまで繰り返し
wihle( have_posts() ) {
    // 検索した結果からデータを1レコードフェッチして、作業中記事を$wp_queryグローバル変数にセット
    // この時点で、$wp_the_queryと$wp_queryの内容は異なる。
    the_post();

    // セットされた$wp_queryグローバル変数より、記事のタイトルを取得する
    echo the_title();
}

wp_reset_query();   // wp_queryの内容を$wp_the_queryに戻す

普通だと$wp_query = the_post();といった形で、DBからfetchしたレコードを戻り値として取るところですが、the_post()がfetchした結果をグローバル変数に保存していると考えると分かりやすいです。

[git]エラー”LF will be replaed by CRLF in”が出るとき、特定リポジトリだけ設定を変更する方法

git for Windowsを使用しているときに、git addを使用してファイルを追加すると、下記のワーニングが出る場合があります。これは、gitのインストール時に、改行コードの自動変換を有効にしているためです。

warning: LF will be replaed by CRLF in ...

現在処理しているリポジトリだけ、改行コードの自動変更を行いたくない場合は、下記のコマンドを実行すればよいです。

git config core.autoCRLF false

gitコマンドを使わずに、設定ファイルを直接変更する場合は、.git/config内の[core]に下記の設定を追加すればよいです。通常、[core]の記述は既にあるので、そのような場合はautoCRLF = falseだけ追加すればよいです。

[core]
    autoCRLF = false

また、特定リポジトリだけでなく、システム全体の設定を変更したい場合は–globalオプションをつければ、インストール時の設定内容を変更することができます。

git config --global core.autoCRLF false

[PHP]mcrypt_module_open()でエラー”Call to undefined method”が出るとき

phpのプログラムで、mcrypt_module_open()メソッドをコールしたとき、Call to undefined method...ワーニングが出る場合があります。

この場合、pho.iniでphp_mcrypt.dllモジュールが読み込まれていない可能性があります。php.iniを確認し、extensionの指定がコメントアウトされていたらコメントを外してください。

;extension=php_mcrypt.dll



extension=php_mcrypt.dll

Windows環境で動作させる場合、PHP5.3以降ではMcryptのライブラリがphp.exeにstatic linkされているため、上記の設定は行う必要がありません(コメントアウトされた定義自体がphp.iniに存在しないです)

手元の環境のphp.exeで、本当にmcryptがstatic linkされているか不安な時は、phpinfo()で確認するとよいです。Configure Commandに --with-mcrypt=staticがあれば、リンクされているはずです(なので設定せずに実行可能です)。

また、php7.1ではmcrypt_module_open()が非推奨になっています。非推奨の理由はmcryptが古すぎるためで、代わりにOpenSSLを使用することが奨励されています。

[WordPress]リクエストURLで指定されるクエリストリングの一覧

WordPressでは、?p=123のような形でブラウザからのリクエストパラメータ(クエリストリング)を受け付けることができます。
標準インストールされたWordPressが処理できるパラメータの一覧は下記のとおりです。

m
p
posts
w
cat
withcomments
withoutcomments
s
search
exact
sentence
calendar
page
paged
more
tb
pb
author
order
orderby
year
monthnum
day
hour
minute
second
name
category_name
tag
feed
author_name
static
pagename
page_id
error
attachment
attachment_id
subpost
subpost_id
preview
robots
taxonomy
term
cpage
post_type
embed

この一覧は、wp-includes\class-wp.php上で指定されています。
プラグインを作る時などで、受け入れ可能なパラメータを追加したい場合は、query_varsフィルタで増やすことができます。

下記の例では、custom_keyパラメータを追加しています。

add_filter('query_vars'、function ( $keys ) {
    $keys[] = "custom_key";
    return $key;
});

Windows10でスリープさせる為のショートカットキー

WIndows10を使用している場合、下記のショートカットキーにて素早くPCのスリープが行えます。

Win+X → U → S

各アルファベットの意味は、”eXecute -> shUtdown/sleep -> Sleep”です。

ちなみにシャットダウンの時は、以下の通りです。

Win+X → U → U

ファイアーエムブレムヒーローズはCocos2d-x製? 使用ライブラリの一覧

任天堂より2/2にファイアーエムブレムヒーローズがリリースされました。

このアプリで使用されているオープンソースライブラリの一覧を紹介します。

ファイアーエムブレムヒーローズの使用ライブラリ一覧

WebP
PicoJSON
uripaser - RFC3986 URI parsing library
SS5Player For Cocos2d-x
liboff
libogg
Tremor
Cocos2d-x
POCO C++ Libraries
Protocol Buffer
OpenSSL
sysutsname.h
GTMNSData+zlib.h
GTMDefines.h
Cricket Audio
Android related

上記の、使用オープンソースライブラリの一覧はアプリを起動してフッタメニューから下記の遷移で確認できます。
その他->FAQ等->このアプリについて->権利表記

この一覧を見ると、キャラクターアニメーションは、SpriteStudioを使用して作られているようです。また、音声制御はCricket Audioを使っていて、このライブラリは他にも、消滅都市、ユニゾンリーグ、LINEタワーライジング等のアプリでも使われています。




ファイアーエムブレム MUSIC COLLECTION ピアノバージョン


ファイアーエムブレムの名曲たちが、ピアノバージョンで2月22日に発売予定です。


FIRE EMBLEM MUSIC COLLECTION : PIANO 〜Faith & Engagement〜

【収録曲】
「戦闘マップ1 プレイヤー側の攻撃」“暗黒竜と光の剣"より
「あなたへ続く道」“if"より
「はるかなる理想郷」“封印の剣"より
「Victory is Near」“蒼炎の軌跡"より
「全体マップ3章(解放戦争:それぞれの道)」“外伝"より
「出逢い」“外伝"より
「Father's Back」“蒼炎の軌跡"より
「セリスのテーマ/巡る想い」“聖戦の系譜"より
「リーフ軍、勝利を求めて リーフ」“トラキア776"より
「「I」~安」“覚醒"より
「神竜伝説(A)」“紋章の謎"より
「混沌の落とし子ユンヌ」“暁の女神"より
「貴様らが…姉さんの言葉を語るな! 」“覚醒"より
「光射す彼方へ」“if"より
「過甚の神」“暁の女神"より
「if~ひとり思う~」“if"より

収録曲の視聴はこちらから↓



FIRE EMBLEM MUSIC COLLECTION : PIANO

[WordPress]動画ヘッダーの自動再生を止める方法

WordPressではver.4.7から動画ヘッダーというカスタムビデオヘッダの機能があります。
これを使用すると、記事設置された動画に対する機能ですが、動画が自動で再生開始されていまします。

これを自動再生させたくない場合は、以下のJavaScriptコードをページに記述しておけばよいです。
仕組みとしては、ページがロードされたときにwp-custom-header-videoのidがあるタグを探し、autoplay=”false”に設定を差し替えています。

$( document ).ready( function() {
    $( document ).on( 'wp-custom-header-video-loaded', function() {
        $("#wp-custom-header-video").attr('autoplay',false);
    });
});

this post is licensed under cc by-sa 3.0 http://wordpress.stackexchange.com/questions/254234/

Windows開発PCのセットアップ手順メモ

choco.exeのインストール


  • admin権限で実行が必要

@powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https:/ /chocolatey.org/install.ps1'))"
SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

chocoから各種ツールのインストール


choco install lauchey -y
choco install cmder -y
choco install visualstudiocode -y

choco install pandoc
choco install php
choco install sourcetree
choco install tortoisegit
choco install virtualbox
rem choco install awscli
rem choco install mp3tag
rem choco install chrome

VisualStudio Codeの設定変更


configの設定変更


{
    "window.zoomLevel": 1,
    "editor.renderIndentGuides": true
}

extensionのインストール


ext install html-snippets
ext install html-css-class-completion

[WordPress]ダッシュボードへリンク集を出すプラグインを自作する

WordPressを使っているとダッシュボードにちょっとした情報を表示したくなる場合があります。

そこで、WordPressにログインした直後に表示される管理画面へリンク集を設置できるプラグインを作成しました。実際は、指定されたHtmlを表示しているだけなので、リンク集に限らず好きな情報を出力できます。

「プラグインの自作」と書くと敷居が高そうですが、function.phpに2つ処理を書くだけなので割と簡単に作成できます。phpのプログラムを書いた人であればすぐわかるレベルですし、プログラムの経験がなくてもhtmlさえ分かれば本記事を元に好きな内容を表示させるようなカスタマイズも簡単です。

Widgetプラグインの作成方法


プラグインのプログラムを準備する


まずは下記の内容でfunction.phpを作成します。

プログラム中にある、$htmlStr = <<<EOTの後に出てくるHtmlがダッシュボードに出力されます。
サンプルで用意したHtmlはGoogleアナリティクスや、アフィリエイトサイトへのリンク集になっています。

<?php
/*
Plugin Name: 0001_nano-admin-dashboardWidget
Copyright: nano
Description: ダッシュボードにリンク集を出力します
Version: 1.0.0
*/

// プラグインを登録
add_action('wp_dashboard_setup', 'nano_dashboard_widgets');
function nano_dashboard_widgets() {
    wp_add_dashboard_widget('nano_dashboard_widgets', 'リンク集',  'nano_dashboard_widget_linkList');
}

// リンク集を表示するウィジット
function nano_dashboard_widget_linkList() {
    $htmlStr = <<<EOT
        <ul style="line-height:1.5rem">
            <li>
                <a href="https://www.google.com/analytics/web">Googleアナリティクス</a>
            </li><li>
                <a href="https://affiliate.amazon.co.jp/">Amazonアソシエイト</a>
            </li><li>
                <a href="https://affiliate.rakuten.co.jp/reports/">楽天アフィリエイト</a>
            </li><li>
                <a href="http://pub.a8.net/a8v2/asResultReportAction.do?action=ud">A8.net</a>
            </li><li>
                <a href="https://www.valuecommerce.ne.jp/">バリューコマース</a>
            </li><li>
                <a href="http://admax.shinobi.jp/">忍者AdMax</a>
            </li>
        </ul>
EOT;

    echo $htmlStr;
}

これをWordPressをインストールしたフォルダの、wp-content\plugins\0001_nano-admin-dashboardWidgetにコピーします。

作ったプラグインを有効化する


WordPressログインし、プラグインページに移動します。一覧にプラグイン0001_nano-admin-dashboardWidgetが追加されているので、これを有効化します。
プラグインの有効化 ここで表示されるプラグイン名や、説明文、バージョン番号は先ほど作ったfunction.phpの先頭にコメントとして記載されています。

<?php
/*
Plugin Name: 0001_nano-admin-dashboardWidget
Copyright: nano
Description: ダッシュボードにリンク集を出力します
Version: 1.0.0
*/

ダッシュボードに表示されていることを確認する


有効化が完了したらダッシュボードページに遷移します。以下のように作成したプラグインが表示されていれば成功です。
プラグインの有効化
単なるリンク集ですが、これでも正式なプラグインですので表示オプションでウィジットの表示ON/OFF制御なども行えます。
表示オプション

ダッシュボードに複数のウィジットを表示させたい時は?


以下のような形でfunction.phpを書き換えると、1つのプラグインに複数のウィジット定義を行えます。
これで、ダッシュボードに表示させるウィジットの数をいくつでも増やせます。

<?php
/*
Plugin Name: 0001_nano-admin-dashboardWidget
Copyright: nano
Description: ダッシュボードにリンク集を出力します
Version: 1.0.0
*/

// プラグインを登録
add_action('wp_dashboard_setup', 'nano_dashboard_widgets');
function nano_dashboard_widgets() {
    wp_add_dashboard_widget('nano_dashboard_widgets',  'リンク集(分析系)',   'nano_dashboard_widget_linkList');
    wp_add_dashboard_widget('nano_dashboard_widgets2', 'リンク集(アフィリエイト系)',  'nano_dashboard_widget_linkList2');
}

// 分析系リンク集を表示するウィジット
function nano_dashboard_widget_linkList() {
    $htmlStr = <<<EOT
        <ul style="line-height:1.5rem">
            <li>
                <a href="https://www.google.com/analytics/web">Googleアナリティクス</a>
            </li>
        </ul>
EOT;

    echo $htmlStr;
}

// アフィリエイト系リンク集を表示するウィジット2
function nano_dashboard_widget_linkList2() {
    $htmlStr = <<<EOT
        <ul style="line-height:1.5rem">
            <li>
                <a href="https://affiliate.amazon.co.jp/">Amazonアソシエイト</a>
            </li><li>
                <a href="https://affiliate.rakuten.co.jp/reports/">楽天アフィリエイト</a>
            </li><li>
                <a href="http://pub.a8.net/a8v2/asResultReportAction.do?action=ud">A8.net</a>
            </li><li>
                <a href="https://www.valuecommerce.ne.jp/">バリューコマース</a>
            </li><li>
                <a href="http://admax.shinobi.jp/">忍者AdMax</a>
            </li>
        </ul>
EOT;

    echo $htmlStr;
}

参考リンク


今回のプログラムでは、WordPressに用意されているAPIの中で、wp_add_dashboard_widget()メソッドを利用しています。wp_add_dashboard_widgetの仕様は下記のページを参考にしてください。

Markdown中級者を目指す人が知っておくべき27の知識

工学社から出ている書籍、はじめてのMarkdown―軽量マークアップ言語の記法と使い方を読了しました。


正直Markdownの書式くらいならネットで十分だと思っていたのですが、改めて知識を整理でき意外と良い本でした。「Markdownを普段何となく使っているけど、時々、改行などが思ったように反映されない…」みたいな人は一度読んでみると色々気づきがあるかと思います。

markdownエディタについて


本書では、エディタとしてMarkdown#Editorというソフトがお勧めしている。

…この本はちょっと前の出版なので、現在ならVisual Studio Codeが便利。
Visual Studio Codeだと、拡張子を*.mdでファイルを作り、”Ctrl+K V”でプレビュー画面を表示できる。ショートカットキーを忘れたときは、F1キーを押して”markdown”と入力すればリストとショートカットキーが表示される。

本文の段落分けについて


  • 本文は通常pタグで囲まれる
  • 文章を別の段落にしたい(2つのpタグに分けたい)場合は、markdownファイル内で改行を2連続で入れ、空行をはさむ
  • brタグを入れたい場合は、行末に半角スペースを2つ入れて改行する
    複数回改行したい場合は、”半角スペース”2つ+改行文字”の行を作る

引用文について(blockquoteタグ)


  • インデントをつけるか、行頭に”>”文字を入れる
  • blockquoteの中で改行したい場合は、”半角スペース”2つ+改行文字”
  • “>>”でblockquoteをネストできる

  • 二重にネストしたblockquoteから戻るには、”>”だけの行が必要


以下のようにすれば…

> 1行目
>> 1.1行目
>> 1.2行目
>
> 2行目

こう表示される

1行目

1.1行目
1.2行目


2行目


箇条書きについて(liタグ)


  • 行頭に”* “を入れればリストを作れる
  • “*”記号の後ろには半角スペースが必要
  • 本文とリストの間(リストを始める手前)には空行が必要
    (本文のすぐ下の行に “* xxxx”を書いてもリストとみなされない)

箇条書きについて(olタグ)


  • 数字+ピリオド+半角スペース”で、連番付きの箇条書きを作ることができる
  • 一覧の列挙中に空行を入れると、連番が最初に戻る
  • 一覧の途中で改行したいときは、行末に半角スペースを2つ入れる
  • 箇条書き以外で行頭に、”1. “を持ってきたい場合は、”1\. “でエスケープできる
  • さらに、”\”マーク自体を表示させたいときは、”\\”と2回重ねる
  • 箇条書きに見出しと本文を書く際に、見出しだけ装飾したい場合は下記のように書く

1. **見出しの1つ目**  
    1つ目の内容説明  
    1つ目の内容説明2行目

1. **見出しの2つ目**  
    2つ目の内容説明  
        
    2つ目の内容説明2行目  

1. **見出しの3つ目**  


1. 見出しの1つ目

1つ目の内容説明

1つ目の内容説明2行目

  1. 見出しの2つ目

    2つ目の内容説明

    2つ目の内容説明2行目

  2. 見出しの3つ目


強調、イタリック、下線について


  • 2段落またいで、強調させることはmarkdown上ではできない
    行いたい場合はhtmlタグを直接書くしかない

  • “1*2*3=6″など、数式で掛け算記号を使いたいときに、誤って強調のマークとみなされる場合がある
    このような場合は、アスタリスクの前に円マークを入れて”\*”とすればよい


画像について(imgタグ)


  • ![altのタイトル](image_url_filename) の形式で、画像を埋め込める
  • !,[,],(,)の各記号の前後に空白を入れると正しく認識しないので注意
  • “altのタイトル”の部分は省略してもよい
  • 手前に文章があると、同じ行に表示される。改行したい場合は、文章の最後に半角スペース2個を入れるとよい

ソースコードの埋め込みについて(codeタグ)


  • 埋め込むコードブロック全体をインデントするのが最も簡単
  • インデントする際に、タブとスペース4つを混ぜないように注意
  • コードブロックを終わらせるには、インデントのない改行を入れる
  • 文章中へecho "hello<br />";のような形でコードを埋め込む場合は、逆クォートで囲む
  • 逆クォートで囲んだコード中に、export STIME=``date``のような形で逆クォートを出したい場合は、逆クォートを2回書く


はじめてのMarkdown―軽量マークアップ言語の記法と使い方 (I・O BOOKS)

[WordPress]REST APIを使って記事の取得を行う

WordPress4.7から取り込まれたREST API v2を使った、記事へのアクセス方法です

記事の検索


直近の記事10件を取得


http://example.com/wp-json/wp/v2/posts

  • トップページのの末尾に”/wp-json/wp/v2/posts”を付ければ、記事がjson形式で取得できます

2ページ目を取得(11~20件目)


http://example.com/wp-json/wp/v2/posts?page=2

  • page=nパラメータを付ければnページ目の値が取得できます

1度に20件取得する(最大100まで指定可能)


http://example.com/wp-json/wp/v2/posts?per_page=20

  • 1ページ当たりの件数も指定可能ですが、指定できるのは1~20の値のみです

記事取得の開始位置オフセットを指定


http://example.com/wp-json/wp/v2/posts?offset=6

  • この為、?per_page=5&page=4と、?per_page=5&offset=15は同じ意味です
    (16件目から5件分のデータを取得します)

トータルで何ページ分あるか


トータルで何ページ分あるかは、jsonの応答データを見ても分からないが、HTTPヘッダで把握できる。

  • X-WP-Total: Postが全部で何件あるか
  • X-WP-TotalPages: 何ページあるか(1ページの件数はper_pageで指定)

[WordPress] Rest APIに関する情報サイト一覧

[WordPress] Rest APIに関する情報サイト一覧

オフィシャルのドキュメント


REST API Handbook

予備知識


WP REST API のドキュメント内の用語集を簡単に翻訳する
基本的な用語の説明

WP REST API ドキュメント Discovery
既に存在するREST API対応のWordPressで、何のAPIが使えるかの調べ方。

WordPress 4.7リリースでの仕様変更


wordpress 4.7でREST-APIの仕様が変更になったので合わせる

WordPress 4.7リリース前の記事


WP REST APIをいろいろ触ってみるハンズオン@WordBench東京のメモ書き
WordBench東京による勉強会のまとめ

WordBench東京 3月ハンズオン
上の勉強会のスライド
導入事例がある

WordPress REST APIで投稿の取得から新規投稿を行う
REST APIの基本的な導入と、認証・投稿処理までの説明

WordPressの新着記事をJSON形式で取得し外部サイトで表示する方法
RESTによる基本的な記事の取得と、PHPによるjsonデータの加工処理

WordPress REST APIにOAuth1.0aで認証して投稿する – KayaMemo
PHPからOAuth認証を行う方法

WordPress REST API で、カスタム投稿タイプなどの情報を取得する

WP REST API v2 でデータを取得して新着情報をjqueryで表示する方法

WORDPRESS REST APIを使った投稿と更新
REST APIを使って記事を投稿する方法

WP REST APIで投稿を追加する

古い情報(WP REST API v1を元にしたドキュメント)


WP REST API を使ってみる(前編)

JSON REST API (WP API) プラグインを利用して ブログを API 化したり、そこから情報を取得して表示したり
2014年の記事なので古い

[WordPress]Lightningテーマでパンくずリストに記事名を出さない

WordPressのBootstrapベースのテーマである、Lightningでパンくずリストのカスタマイズを行います。

個別記事ページにを表示させた場合、パンくずリストの末尾に記事タイトルが表示されます。PCで表示したばあいは違和感がないのですが、スマホで表示させたときにタイトルをパンくずリストにタイトルが表示されているとファーストビューに表示される情報量が少なくなってしまいます。またパン屑リストのすぐ下に、h1タグの記事名が出るため、同じ情報が連続表示されてしまい違和感があります。

このため、パンくずリストに記事名を出さないよう修正してみます。

Lightningテーマでパンくずリストから記事タイトルを消す方法

今回改造するファイルは、module_panList.phpです。Lightningテーマでは、このファイルでパンくずリストの表示を制御しています。このファイルでは、全てのページのパンくずリスト表示をコントロールしていますが、今回回収したいのは個別記事なので、「 if ( is_single() ) 」の分岐部分を修正します。この分岐内を見ると、最後にget_the_title()で記事タイトルを取得しているため、この行をコメントアウトしてしまえばOKです。

具体的には、以下のような形でコメントアウトを行います。

変更前:

/* Post type
/*-------------------------------*/
if ( ... ) {
   ...
} else if ( is_single() ) {
   ...
   $panListHtml .= '<li><span>' . get_the_title() . '</span></li>';
} else if ...



変更後:

/* Post type
/*-------------------------------*/
if ( is_archive() || ( is_single() && !is_attachment()) ) {
   ...
} else if ( is_single() ) {
   ...
   // $panListHtml .= '<li><span>' . get_the_title() . '</span></li>';
} else if ...




Lightningテーマで個別ページからカテゴリ名を消す方法

また、上記以外に個別ページではカテゴリ名の表示が、タイトル直下とパンくずリストの両方に出てしまい、ファーストビューの表示エリアを無駄遣いしています。タイトル直下のカテゴリ名の表示についてはWordPressのフィルタでフックできるようになっているため、function.phpに下記のフィルタを追加すれば消すことができます。

下記の例では、個別ぺーじが表示されたときに限って表示を抑制させています。

// 個別記事のヘッダで、サイト名の直下にカテゴリ名を出さない
add_filter( 'lightning_pageTitHtml', 'my_lightning_pageTitHtml' );
function my_lightning_pageTitHtml( $titleHtml ) {
    if ( is_single() ) {
        return "";
    }
    return $titleHtml;
}


[WordPress]All in one SEO packでカスタムフィードからTwitterカード画像をセットする方法

WordPressでSEO対策や、Facebook/Twitterなどのソーシャルサイト向けのタグを一括設定できるプラグインとしてAll in one SEO packがあります。

このプラグインでは、OGPという記事の要約や画像などをSNSサイトへ正しく伝えるためのメタタグを容易に設定することができます。WordPressでECサイトなどを管理している場合、Twitterカードに商品の画像を表示できるためページへのアクセスアップが期待できます。OGPの仕様では「meta property=”og:image…」というメタタグでページのメイン画像を指定できます。Twitterカードの場合は、「meta name=”twitter:image”…」での管理になります。

ですが、商品の紹介ページなどでカスタムフィールドに商品画像を管理している場合、All in one SEO packプラグインのデフォルト設定ではカスタムフィールドにセットした画像が使用されません。

今回は、カスタムフィールドに設定された画像ファイル名を、All in one SEO packプラグインを使用時にog:imageやtwitter:imageに指定する方法を説明します。

All in one SEO packでog:imageにカスタムフィールドを指定する

WordPressの管理画面にログインし、左メニューの「All in one SEO -> ソーシャルメディア」をクリックします。
170102_2_1


画像設定のOG:Imageソースを選択欄を、”Image From Custom Field”に変更します。
また、「画像にはカスタムフィールドを利用する」の欄に、使用したいカスタムフィードのフィールド名を指定します。設定を行ったらページ上部にある「設定を更新」ボタンを忘れずに押してください。
170102_2_2


設定の更新が終わったら、下記のサイトでOG:Imageが正しく設定されているかを確認できます。
Twitter Card validator



また、Twitterカードは効果測定が行える分析ページが存在します。設定が終わったら、翌日に下記のページにアクセスするとツイートがどの程度拡散されたかや、クリックされた回数などを確認することができます。
https://analytics.twitter.com/

[WordPress]Jetpackの関連記事表示で3カラム表示を1カラム表示に変更する方法(Related Posts)

WordPressで多くの人が利用しているプラグインのJetpackには、関連記事を表示させる機能が用意されています。この関連記事は、特に設定をしなくても精度の高いお勧め記事を出してくれるのが便利なので利用している方も多いかと思います。

デフォルトでは3カラム表示されるのですが、これを1カラムで表示したい場合は、下記のcssを追加で記載すればよいです。2カラムで出したい場合はwidthを50%にして下さい。

#jp-relatedposts .jp-relatedposts-items .jp-relatedposts-post {
    width:100%;
}



また、上部の余白を削りたい場合は、下記のcssで変更できます。

#jp-relatedposts {
    margin:0;
}



関連記事に表示させる記事数を変更したい場合はfunction.phpにjetpack_relatedposts_filter_optionsフィルタ関数を記述します。下記のサンプルコードでは、記事数を4記事に増やしています。

function jetpackme_more_related_posts( $options ) {
    $options['size'] = 4;
    return $options;
}
add_filter( 'jetpack_relatedposts_filter_options', 'jetpackme_more_related_posts' );


[WinSCP]エラー対処法:”WinSCPはドラッグされたファイルがどのフォルダにドロップされたか解決できませんでした…”

WinSCPで、リモートのファイルをデスクトップなどにドラックした場合、下記のエラーがでることがあります。これは、WinSCPの設定で「一時フォルダを使用」が有効化されていないためです。
170102_0

---------------------------
エラー
---------------------------
WinSCPはドラッグされたファイルがどのフォルダにドロップされたか解決できませんでした。
通常のフォルダにドロップしていないか、シェルドラッグ拡張がインストールされていないかの
どちらかが原因です。拡張をインストールするか互換ドラッグアンドドロップモードに変更し、
ダウンロードには一時領域を使用してください。
そうすることで、どの場所にもファイルをドロップすることができます。
---------------------------



ドラックドロップによるファイルコピーを行えるようにするには、「一時フォルダを使用」を有効化すれば良いです。

WinSCPで「一時フォルダを使用」を有効にする方法


メニューより”オプション -> 環境選択”を選択します。
170102_1


左側のメニューより転送 -> ドラッグ&ドラッグを選択します。
その後、右側にある”一時ファイルを使用”にチェックを入れます。
170102_2


設定後に再度、リモートのファイルをドラッグ&ドラッグすると、下記のダイアログが表示されるので、そのまま”コピー”ボタンをクリックすればデスクトップなどへのドラッグが行えます。
170102_3

[WordPress]Ligithingテーマの記事ヘッダをカスタマイズする

WordPress向けのシンプルな、BootStrap使用テーマにLigithingがあります。今回は、Ligithingで記事ヘッダのレイアウトをカスタマイズする方法を説明します。

今回カスタマイズするヘッダは、下記画像の赤枠の部分です
170101_1


記事ヘッダのレイアウトは、個別記事/記事一覧ともに、module_loop_post_meta.phpファイルで制御しているので、このファイルを変更します。実際にカスタマイズする場合は、Ligithingテーマを直接編集するのではなく子テーマを作成してから修正してください。


記事の公開日を消す

module_loop_post_meta.phpを開き、下記の行を削除する

<span class="published entry-meta_items"><?php echo esc_html( get_the_date() ); ?></span>




最終更新日の表示を消す

module_loop_post_meta.phpを開き、下記の行を削除する

<?php    
// Post update
$meta_hidden_update = ( isset($lightning_theme_options['postUpdate_hidden']) && $lightning_theme_options['postUpdate_hidden'] ) ? ' entry-meta_hidden' : ''; ?>
 
<span class="entry-meta_items entry-meta_updated<?php echo $meta_hidden_update;?>">/ <?php _e('Last updated','lightning'); ?> : <span class="updated"><?php the_modified_date('') ?></span></span>




投稿者の表示を消す

module_loop_post_meta.phpを開き、下記の行を削除する

// Post author
<?php    
$meta_hidden_author = ( isset($lightning_theme_options['postAuthor_hidden']) && $lightning_theme_options['postAuthor_hidden'] ) ? ' entry-meta_hidden' : ''; ?>
 
<span class="vcard author entry-meta_items entry-meta_items_author<?php echo $meta_hidden_author;?>"><span class="fn"><?php the_author(); ?></span></span>




記事のカテゴリを複数設定している時、すべてのカテゴリを出す

以下のロジックを変更する

変更前:

<?php    
    $taxonomies = get_the_taxonomies();
    if ($taxonomies):
        // get $taxonomy name
        $taxonomy = key( $taxonomies );
        $terms  = get_the_terms( get_the_ID(),$taxonomy );
        $term_url	= esc_url(get_term_link( $terms[0]->term_id,$taxonomy));
        $term_name	= esc_html($terms[0]->name);
        echo '<span class="entry-meta_items entry-meta_items_term"><a href="'.$term_url.'" class="btn btn-xs btn-primary">'.$term_name.'</a></span>';
    endif;
?>



変更後:

<?php    
    $taxonomies = get_the_taxonomies();
    if ($taxonomies):
        // get $taxonomy name
        $taxonomy = key( $taxonomies );
        $terms  = get_the_terms( get_the_ID(),$taxonomy );
        foreach( $terms as $term ) {
            $term_url	= esc_url(get_term_link( $term->term_id,$taxonomy));
            $term_name	= esc_html($term->name);
            echo '<span class="entry-meta_items entry-meta_items_term"><a href="'.$term_url.'" class="btn btn-xs btn-primary">'.$term_name.'</a></span>';
        }
        echo '<br />';
    endif;
?>

[WordPress]shortcodeで記事タイトルや、カスタムフィードの内容を取得する方法

shortcodeで記事のタイトルを取得する

WordPressでは、ショートコードを使用することで、phpプログラムの出力結果を記事中に埋め込むことができます。ショートコードを提供するプラグインのメソッド内で記事のタイトルを取得したい場合、get_the_title()を使用します。

function.php

function func_showTitle() {
    return "この記事のタイトルは[" . get_the_title() . "]です";
}
 
add_shortcode('showtitle', 'func_showTitle');



記事中で[showtitle]と記載することで、記事のタイトルを表示できます。

shortcodeで記事IDやカスタムフィードの情報を取得する

shortcodeの処理内で、記事のIDを取得したい場合は、get_the_ID()メソッドを使用することで取得可能です。また、カスタムフィードの情報(wp_postmetaテーブルの内容)を取得したい場合は、get_the_ID()で取得したpost_idを引数にget_post_meta()メソッドを呼び出せば取得可能です。

下記のサンプルでは、カスタムフィードとして設定された商品名(item_name)を表示するコードです。

function func_showItem() {
    $postMeta= get_post_meta( get_the_ID() );
    $name = $postMeta["item_name"];
    return "商品名: {$name}";
}
add_shortcode('showItem', 'func_showItem');