カテゴリー
その他

このサイトのWordPressのデータベースであるMySQLを5.5から5.7にバージョンアップした話し

どうもこのサイトのWordpressの管理画面が遅くなっているし、Gutenbergでのいろいろ障害が発生するしで、サイトを見直してみる。

とにかく記事を書いているときに遅いのは問題である。Gutenbergが原因かもしれないが、まずは自分のサイトを疑ってみる。

今間気になっていたのはWordpressサイトで使っているMySQLのバージョンである。しばらく前からさくらインターネットのレンタルサーバーを使っているが、そのときにインストールしたMySQLは5.5であった。現在のWordpressのMySQLの推奨バージョンは、5.6以上になっていた。

ということで、MySQLをバージョンアップしてみる。

さくらインターネットのレンタルサーバーでは、データベースアップグレード機能というのを用意している。最初はこの機能を使ってバージョンアップしてみようと思ったが、処理はスケジューリングされて、今から4時間後になっていたので見送る。その間はデーターベースの更新はしない方がよいとか書かれているので、これではないと思った。

そこでデーターベースを手作業でやってみる。phpMyAdminでお手軽にエクスポート、インポートをしようとしたけど、インポートできるデータベースのサイズが32MBだったので、こちらは320MBでZIPで圧縮しても32MBをわずかに越えるということで断念した。

仕方ないので、MySQLのコマンドを叩いて対応することにする。参考にしたのは、以下のサイトである。

まずは、データベースをバックアップしたSQLファイルを、Webサーバーの適当なところに置く。今回は、WordpressのバックアップするためのプラグインのBackWPupでローカルディスクをしていしてバックアップしておく。あとは、SSHでWebサーバーにログインして、データベースに接続して、mysqlのsourceコマンドでSQLファイルを投入する。

そして、Wordpressの設定ファイルでデータベースの接続先を変更して完了である。sourceコマンドでのSQLファイルの投入に時間がかかったが、問題無くMySQLデータベースのバージョンアップが完了した。

さて、MySQLデータベースのバージョンアップの結果はというと、Gutenbergの再利用ブロックの挿入は解決したが、利用ブロックの10個以上の一覧表示は解決されなかった。

しかしながら、まだ投稿の更新が非常に遅い。ただし、ブラウザのネットワークのパフォーマンスを見ると、アクセス時間が半分くらいになっていた。

再利用ブロックの挿入が解決しただけでも、良しとしましょうか。

追記

自動保存で更新待ちになるタイミングが多いので、Gutenbergの自動保存の設定を変更しておいた。更新時間が長いので、延々と更新となってしまう。

デフォルト10秒らしいけど、これって短すぎやしないか?? function.phpを変更させずに設定画面で変更するようにして欲しいわ。

それと、こんな風に再利用ブロックのタブが出てこないときがある。何回かタブをクリックすると再利用ブロックのタブが出てくる。

今はどういう訳か再利用ブロックのタブが出てこない。

まだまだGutenbergは不安定である。

カテゴリー
その他

CandyCaneをRedmineに移行した。だけどデータ移行なんて考えないという話し。

現在作業記録をCandyCaneで行っている。CandyCaneは元々Redmineの機能をPHPで記述するということで始まったプロジェクトである。現在は、ほぼ開発は停止している。

CandyCaneはPHP5.6の上で動かしているので、PHP自体アップデートはない。新しくPHP7の上で動かそうにも難しい。実際にDockerのコンテナでPHP7のサーバーを起動してCandyCaneを動かしたが諦めた。この際、CandyCaneを捨ててしまおうと考えた。

つぎのバグトラッキングシステムを何にしようかいろいろ検討したが、チケットごとに時間での工数記録してお客さんに報告をしなければいけないので(これが一番大事)、結局はCandyCaneの大元のRedmineに落ち着いた。操作もあまり変わらないし。

最初はCandyCaneからRedmineにデータの移行をしようと考えたが、これは大変だったのでやめた。今月からCandyCaneの使用をやめてきっぱりRedmineでチケット管理をやっていく。チケット番号(issue ID)の重複をさけるため、チケット番号はGitでも管理しているので、チケット番号を途中まで採番しておく。これはissuesテーブルのidのオートインクリメントを設定し直すだけ。

CandyCaneは古いPHPが動くようにDockerのコンテナを立てて、CandyCaneのファイルとデータベースをそのまま移行するくらいで問題無かった。

最後に利用しているお客さんにCandyCaneからRedmineに変わったというアナウンスと、Redmineのアカウントを発行すれば完了。

しかしながら、CandyCaneを使い始めて11年経っていた。チケットは約3,000近く溜まっている。トラブルなくここまで無事に動いてくれた。ご苦労様でした。

カテゴリー
その他

WordPressのBackWPupプラグインでまたエラーが出る

WordPressのBackWPupプラグインからエラーの通知がやってきた。

「ステップを中止: 回数が多すぎます。」というエラーメッセージでGoogleさんに聞くと、自分のサイトが出てきた。

BackWPupプラグインでエラーが出るので

同じ障害が出ていたのを忘れていた。たまにある話し。

そのときはPHPのバージョンを上げれば対応したようだけど、現在はさくらインターネットのVPSからただのレンタルサーバーにWordpressのサイトを移している。さくらインターネットのコントロールパネルを見るとPHPのバージョンは7.2だった。これを7.3にバージョンアップする。

結果はエラーは変わらない。他に原因があるようだ。

追記

続きはこちら

【解決】WordPressのBackWPupプラグインでまたエラーが出る

カテゴリー
その他

自分のサイトをIPv6対応にする

せっかくIPv6でアクセスできるようになっても、全然どこのサイトもIPv6に対応していないじゃねーか、とぼやいている前にここのサイトをIPv6に対応しておく。

ここのサイトは、さくらインターネットのさくらのレンタルサーバーを使っているから、簡単にIPv6に対応できる。「ドメイン/SSL設定」からドメインを選んで、「変更」ボタンを押す。出てきた画面で「IPv6アドレスを利用する」にチェックをして、「送信」ボタンで確定する。これでWebサーバーの設定は完了。あとはDNSレコードにAAAAレコードを追加すればIPv6化できているはず。

でも、本当にIPv6でアクセスできているかだけど、今までのIPv4と同じ画面だから違いがわからない。さくらのレンタルサーバーだからアクセスログは明日ではないと出てこないので、仕方ないのでphpinfo()を入れてみた。Apacheの環境変数を見ると、無事にIPv6でアクセスできているみたい。

以上で本サイトのIPv6対応は簡単だった。だけど特に達成感の感動はなし。

PPPoEではなくてIPoEで接続するから、混んでいるIPv4のPPPoEよりはIPv6のほうが少しは快適になるはず。だからみんなもIPv6に対応しなさいよ。

カテゴリー
オープンソース システム関連

BackWPupプラグインでエラーが出るので

BackWPupプラグインでエラーの通知が来た。BackWPupはWordPressの自動バックアッププラグイ。実はエラーを出ていても、しばらく放っておいたけど。

エラーが出ていると何か気持ち悪いので対応する。BackWPupの管理画面に入ると、「mysqliがどうしたこうしたと」警告が出ていた。これを手がかりに対応する。

BackWPupのジョブを直接実行すると

「エラー: ステップを中止: 回数が多すぎます」

とエラーメッセージが表示する。こちらを手がかりにしたほうが簡単に対応方法が見つかった。

要はPHPのバージョンが古くてmysqliのPHP拡張モジュールを対応していないからMySQLに接続しようとするとタイムアウトになっているとのことだった(だいぶ意訳)。

このWordPressのサイトはさくらインターネットのレンタルサーバーを使っているけど、最初にPHP7を入れたはずだけどと思ってphp -vを打ってみると5.6だった。つまりPHPのバージョンが古いのが原因だった。

さくらインターネットのサーバーコントロールでPHPのバージョンを7.2に切り替えてみる。実はこれは危険。思いつきで切り替えてはダメ。案の定WordPressのサイトにアクセスすると、画面が真っ白になってしまう。

「ああ、やってもうた・・・」と思ったけど気を取り直して、さくらインターネットのサーバーコントロールからPHPのバージョンを5.6に戻してみる。これは無事にアクセスできて元通り。この辺りはレンタルサーバーの気軽で簡単なところ。もし、専用サーバーだったら、PHPのバージョンを元に戻すは大変だろうな。

おそらくプラグインが悪さしているのだろうと思って、めぼしいプラグインを無効にしておく。PHPを7.2に切り替えると、今度は無事にアクセスできる。

一つづつプラグインを有効にしてみて、PHP7.2に対応していないプラグインを探してみる。インストールしていて対応していていないプラグインは、

  • Google+Blog
  • spam-byebye

の2つだった。

spam-byebyeは、もう古いしWordPressのJetPackでスパムコメントの対応はできていそうなのでもう必要ない。

痛いのはGoogle+Blogである。こいつはいくらかお金を払ってインストールしたもの。Google+(みなさん使っていないと思うが、実は自分が利用している唯一のSNS)から記事を自動的に取得して投稿してくれる連携プラグインである。このままではGoogle+Blogプラグインを有効にするとサイトにアクセスできなくなるので、したかないけど無効にしておく。Google+Blogプラグインのサポートサイトを見てみると、Error 502になるので、既にサポート終了になってしまっている。WordPressからG+へは自動投稿できているからよしとする。

以上でPHP7.2の対応完了。本件の始まりだったBackWPupプラグインのエラーはなくていた。ジョブを直接実行してみると正常にバックアップができていた。

カテゴリー
サポート システム関連

WordPressのメディアライブラリで新規追加するとHTTP エラー

ここのWordPressのサイトでメディアライブラリから画像ファイルを新規追加するとHTTP エラーが出てしまいました。心当たりは全くありません。

さて、Googleさんに聞くといろいろでてきます。

などなど。

Webサーバーのエラーログを見ましたが、エラーは出ていませんでした。何かfunction.phpが怪しいとのことでしたが、WordPressのテーマのままでした。

とりあえず、別のテーマにしてみると、今度はうまくファイルをアップロードできるようになりました。テーマを元に戻してみると、これも成功しました。

以上、原因不明で解決できてしまいました。結局テーマを一度別のテーマにしたら解決でした。

カテゴリー
インストール オープンソース

Laradockを使ってCakePHP3+Xdebug+VS Codeの開発環境を構築する。..

CakePHP3で作りたいものがあったので、CakePHP3の開発環境を簡単にDockerを使って構築しようと思い立った。最初は自分でdocker-compose.ymlを作成してコンテナを起動してみたけど、どうしてもXdebugでデバッグができなかった。

たまたまLaradockという本来はLaravelフレームワーク用のDockerコンテナキットを見つけた。最後にcomposerでLaravelの代わりにCakePHPをインストールできるらしいからLaradockを使ってみた。LAMP関連(今回はAではなくnginxだけど)のコンテナが全部入りだから(MySQLだけではなくて、PostgreSQLやSQL Serverもある)、自分でdocker-compose.ymlを書くよりはいいだろうと思った。

参考までにこれから構築していく自分の環境は以下の通りである。ここにLaradockを使ってCakePHP3+Xdebug+VS Codeの開発環境を構築する。。

Windows 10 Pro 64 bit
Docker version 17.12.0-ce, build c97c6d6
docker-compose version 1.18.0, build 8dd22a96

以下はいろいろと参考にしたサイトからつまみ食いしなから設定を行った部分を抜き出してまとめていく。

Laradockの設定は、こちらのサイトを途中まで参考にした。

PHPフレームワーク「Laradock」で、手軽にLaravel+Dockerな開発環境を構築する

gitのcloneでLaradockをインストールしている。次にLaradockでCakePHP3に関する設定を行うには、こちらのサイトを参考にした。

LaradockでPHPフレームワーク(Laravel・CakePHP)とCMS(WordPress・Drupal・baserCMS)の開発環境(nginx・php-fpm・mysql)を構築する

.envをコピーして設定して、これでインストール完了ですと言えないのは、コピー&ペーストインストールのいつものこと。このままではphpMyAdminからMySQLコンテナに接続できないとか、細かい問題があった。そしてXdebugでPHPのデバッグをやりたかったので、いろいろ設定を追加していく。

まずは、上記の2つのサイトを参考にしてLaradockをインストールする。自分のところでは、今までの作業でディレクトリはこのようになっている。

 /laradock-test
 ├── laradock
 └── src

.envの設定だが、設定の一番のポイントはポート番号を重ならないこと。既にローカルでPHP+Xdebugが動いていたようなので、ポート番号の指定で嵌まった。使っていないポート番号を設定しておく。以下に今回設定した.envのnginx, MySQL, phpMyAdminの設定を上げておく。

 ### NGINX
 NGINX_HOST_HTTP_PORT=8082
 NGINX_HOST_HTTPS_PORT=443
 NGINX_HOST_LOG_PATH=./logs/nginx/
 NGINX_SITES_PATH=./nginx/sites/
 NGINX_PHP_UPSTREAM_CONTAINER=php-fpm
 NGINX_PHP_UPSTREAM_PORT=9000

## MYSQL
 MYSQL_VERSION=5.7
 MYSQL_DATABASE=default
 MYSQL_USER=default
 MYSQL_PASSWORD=secret
 MYSQL_PORT=3333
 MYSQL_ROOT_PASSWORD=root
 MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d

### PHP MY ADMIN
 # Accepted values: mariadb - mysql
 PMA_DB_ENGINE=mysql
 # Credentials/Port:
 PMA_USER=default
 PMA_PASSWORD=secret
 PMA_ROOT_PASSWORD=secret
 PMA_PORT=8083

使っていない別のポート番号に設定し直しておく。MYSQL_VERSIONは元の設定の8.0だと認証で失敗してしまったので、8.0ではく5.7に設定したら認証ができた。こちらは何か別のよい方法があるかもしれない。

WORKSPACEとPHP_FPM の設定は以下の通り。修正した箇所だけを上げておく。

 ### WORKSPACE
 WORKSPACE_INSTALL_XDEBUG=true

 ### PHP_FPM
 PHP_FPM_INSTALL_XDEBUG=true
 PHP_FPM_INSTALL_INTL=true

Xdebugを使うのでWORKSPACE_INSTALL_XDEBUGとPHP_FPM_INSTALL_XDEBUGをtrueにして(PHP_FPM_INSTALL_XDEBUGだけでもいいかも?)、PHP_FPM_INSTALL_INTLはCakePHP3で必要なのでtrueにしておく。

.envの設定の最後として、CakePHP3のインストール先のディレクトリも設定しておく。

# Point to your code, will be available at `/var/www`.
APPLICATION=../src/

nginxのドキュメントルートを修正する。設定するファイルは以下のファイルである。

.\laradock\nginx\sites\default.conf

こちらのrootの設定を、CakePHP3のリモート側のドキュメントルートのディレクトリに設定する。今回のプロジェクト名をmycakephpとしておく。

root /var/www/mycakephp/webroot;
ここで一度Docker composeを実行してコンテナを起動しておく。
docker-compose up -d nginx mysql phpmyadmin

workspaceコンテナにログインして、composerを使ってCakePHP3をインストールしておく。こちらは参考サイトの通り。

LaradockでCakePHPの開発環境(nginx・php-fpm・mysql)を構築する

ここではサイトに書いてある通り、以下のコマンドでプロジェクトmycakephpでCakePHP3をインストールした。

 $ composer self-update && composer create-project --prefer-dist cakephp/app mycakephp

nginxからCakePHP3のサイトを参照できるかチェックする。OKならCakePHP3の初期画面が見えるはず。

データベースの接続の設定を.\src\mycakephp\config\app.phpにしておく。

'Datasources' => [

    'default' => [
       :
    'host' => 'mysql',
       :
    'username' => 'default',
    'password' => 'secret',
    'database' => 'default',
       :

このような感じで.envのMySQLの設定に合わせておけば、データベースに接続が成功はずである。

phpMyAdminも確認しておく。こちらも.envのMySQLの設定通りにすればログインできてMySQLの中を参照できるはずである。もちろん、MySQLのパスワードは適当なものに変えること。

サーバ:mysql
ユーザ名: root
パスワード: root

MySQL Workbenchからも接続を確認できた。以下の接続情報でWindowsローカルで接続できた。

Hostname:localhost
Port: 3333
Username: root
password: root

最後にXdebugの設定である。Xdebugのコンテナ側の設定ファイルは次の2つである。同じ内容でコピーすれば大丈夫だった。

.\laradock\php-fpm\xdebug.ini
.\laradock\workspace\xdebug.ini

自分が設定した内容は以下の通りである。とりあえずプロフィラの設定も含めて設定しておく。

 xdebug.remote_host=172.27.7.81
 xdebug.remote_port=9002
 xdebug.idekey=Listen for XDebug

 xdebug.remote_autostart=1
 xdebug.remote_enable=1
 xdebug.remote_connect_back=0
 xdebug.cli_color=1
 xdebug.profiler_enable=1
 xdebug.profiler_output_dir="/var/www/mycakephp/tmp"

 xdebug.remote_handler=dbgp
 xdebug.remote_mode=req

 xdebug.var_display_max_children=-1
 xdebug.var_display_max_data=-1
 xdebug.var_display_max_depth=-1

ここでわからなかったのはxdebug.remote_hostの値だった。結論としてはこちらはWindowsの場合、

ipconfig

で表示されるDocker側の仮想スイッチのアドレスの値を設定しておく。Googleさんに「xdebug リモートデバッグ」で検索して、よく出てくるサイトに書かれている$_SERVER[‘HTTP_X_REAL_IP’]とか$_SERVER[‘REMOTE_ADDR’]の値ではないので注意すること

xdebug.remote_host = host.docker.internal
xdebug.remote_connect_back=1
xdebug.remote_port=9002
xdebug.idekey=Listen for XDebug

xdebug.remote_autostart=1
xdebug.remote_enable=1
xdebug.remote_connect_back=0
xdebug.cli_color=1
xdebug.profiler_enable=1
xdebug.profiler_output_dir="/tmp"

xdebug.remote_handler=dbgp
xdebug.remote_mode=req

xdebug.var_display_max_children=-1
xdebug.var_display_max_data=-1
xdebug.var_display_max_depth=-1

xdebug.remote_hostの設定は、最近新しくDockerのための設定が追加されたようなので、こちらは難しいことをせずにhost.docker.internalを指定しておく。これでうまくデバッグができるようになった。

docker-compose stop
docker-compose build php-fpm workspace

でphp-fpmとworkspaceのイメージをビルドしなおす。ビルドできたら、

docker-compose up -d nginx mysql phpmyadmin

をDocker Composeを再度実行する。nginxのドキュメントルートにphpinfo()を書いたファイルを置いてアクセスしてみて、正しくxdebugが設定されているかを確認しておく。

クライアント側の開発環境はマイクロソフトのVisual Studio Code(VS Code)を使っている。あらかじめVS Codeの拡張機能であるPHP Debugをインストールしておく。次にVS Codeのデバッグの構成ファイル(launch.json)を修正する。launch.jsonは以下のように設定した。

{
  "version": "0.2.0",
  "configurations": [

   {
    "name": "Listen for XDebug",
    "type": "php",
    "request": "launch",
    "port": 9002,
    "pathMappings": {
      "/var/www":"${workspaceRoot}/src"
     },
    "ignore": [
      "**/vendor/**/*.php"
    ]
   },
   {
    "name": "Launch currently open script",
    "type": "php",
    "request": "launch",
    "program": "${file}",
    "cwd": "${fileDirname}",
    "port": 9002
   }
  ]
 }

portは、xdebug.iniのxdebug.remote_portと同じ値にする。以下のように設定するように言っているサイトもあるが、

      "serverSourceRoot": "/var/www",
      "localSourceRoot": "${workspaceRoot}/src"

serverSourceRoot、localSourceRootとも今後推奨されない設定のようなので、pathMappingsにしておく。pathMappingsの設定は、

"pathMappings": {
    "リモートディレクトリ":"ローカルディレクトリ" 
    },

のようにリモートとローカルのパスをマッピングする設定である。ドキュメントをよく読まずにリモートとローカルを反対にしてしまったので動かなくて悩んだ。こちらはnginxのドキュメントルートのディレクトリではないことに注意する。ドキュメントルートディレクトリ外のファイル(例えば、.\src\mycakephp\src\Controller\AppController.php)をデバックしようとしたときに、pathMappingsにルートディレクトリに設定してしまうとソースファイルが見つからないと言ってくる。そこでソースファイルを格納しているディレクトリを設定しておく。

ignoreの設定をしておかないと、以下のような例外が途中で発生する。どうしてかは不明である。

例外が発生しました

Aura\Intl\Exception: Package 'default' with locale 'ja-JP' is not registered.

.\src\mycakephp\webroot\index.php とかに適当にブレークポイントを設定して、Listen for XDebug”の構成でデバッグを行う。ブレークポイントを設定したところで止まるかとチェックする。後はステップオーバーでプログラムが進むか、ステップインで別のソースを参照できるか、または変数の中身を参照できるかをチェックして完了。

以上でLaradock+CakePHP3+XdebugでVS Codeを使って快適にデバッグができるようになった。以上、再度開発環境を構築する際に忘れないようにメモを残しておく。

追記

同じ設定をMacでやってみたら、niginxコンテナが起動できなかった。原因不明・・

.\laradock\nginx\sites\default.conf にゴミが入っていたのが原因だった。dockerのログを見たら原因がわかった。

無事にMacでCakePHP3のトップページを参照できた。ただしデバッグできない。

Macでもデバッグができるようなった。ただし、xdebug.ini に

xdebug.remote_host=docker.for.mac.localhost

を設定すればOKのようだ。情報はこちらのサイトから。

PHP on Laradock w/ Visual Studio Code(VS Code)でデバッグ環境 (特にon Mac)

ただし、MacでDockerはとても遅い。ブラウザが表示し終わるのに時間がかかる。こちらは問題になっているようで、将来改善されるのかな?

追記2

VS CodeのターミナルからDocker Composeすると、IO Errorが出る。普通にPower Shellで実行するとうまく行く。これは、issuesに上がっているから周知の問題なのかな?

追記3

MySQLのコンテナが起動できなかったので、解決策はこちらから

LaradockでMySQLがどうしても立ち上がらない人あつまれー!

追記4(2018年9月14日)

xdebug.remote_hostの設定を変更しておく。

カテゴリー
オープンソース

CakeEmailでメール本文が文字化けする

とっても悩んで解決したのでメモを残しておく。

CakePHPのCakeEmailを初めて使ってみたら、送信したメールの本文が文字化けする。今までQdmailを使っていたので、そんな現象には合わなかった。

Googleさんに聞いてみると

CakeEmailを使っていて本文が文字化けたらとりあえずcharsetを疑ってみる

なんて書いてあるけど、charsetにISO-2022-JPを設定しても現象は変わらない。今度はメールヘッダがも文字化けする。

しかたないので、CakeEmailをNetBeansのデバッガで追ってみる。CakeEmailの_encodeString()メソッド辺りに見当をつけてブレークポイントを設定する。デバッグしてみると何とmb_convert_encoding()を処理する前にreturnしていた。

原因はmb_convert_encoding()関数が存在しないことだった。つまり、mbstringモジュールをインストールしていないことが、そもそもの原因である。

php.iniにmbstringモジュールを読み込んであげて、mbstringモジュールの設定を適当にしてphpinfo()でmbstringがサポートされていることを確認する。

今度は文字化けせずにメールを送れた。

WindowsのローカルPCに開発環境にPHPをインストールしたままで動かしたのが原因かもしれない。

カテゴリー
インストール 覚え書き

PHP 5.6 にアップデートする

ここのサーバーにインストールされているPHPを5.6にアップデートする。今さら遅いくらいですが。本当なら7にアップデートすればいいのですが・・・。

remiのレポジトリを変更すれば簡単にできました。詳しくはこちらのサイトを参照のこと。この通りにやりました。

カテゴリー
オープンソース

WordPressの固定ページの中に投稿最新一覧を表示する

お客さんのWordPressサイトでカテゴリごとに投稿の最新一覧を表示している固定ページがあります。いい加減手作業で更新するのも面倒になってきましたので、プログラムで対応します。

Googleさんに聞いてみるとショートコードを登録して呼び出すようなことをみなさん書いています。何と皆さん出しているPHPのコードはすべて同じです。所謂コピペ記事です。何か気持ち悪い状態になっています。さて、誰がオリジナルなんでしょうか?

しかしながら、WordPressって固定ページ内にPHPのプログラムを書けないのでしたね。今ごろ気が付きました。

そのコードをコピペしてもいいのですが、2つのカテゴリの記事一覧を表示したいので、2つコピペしなければいけませんし、第一コピペコピペで気持ち悪いです。パラメーターを渡して切り替えなんて改造すればいいのですが、それも面倒ということで、何か別の方法を探します。

What’s New Generator というよさげなプラグインが見つかりました。早速インストールして試してみます。しかし、カテゴリのフィルターが1つで固定されてしまうので、2つのカテゴリの最新一覧を並べることができません。惜しいですがこれでありません。

次に当たったのは、Shortcodes Ultimateです。基本的にショートコードでWordPressのいろいろな部分にアクセスできるのですが、今回は投稿のカテゴリ別にタイトルだけを最新3件の記事を一覧に表示します。具体的には、

[su_posts template="templates/teaser-loop.php" posts_per_page="3" tax_term="8"]

なんて書いてしまいます。出力されるタイトルがHTMLのコードのh2タグで吐き出してしまいますので、この辺りは本当なら修正しないといけないのでしょう。CSSで指定してデザインを合わせて作業完了です。