タグ: WordPress

  • WordPress のデフォルト ブロックテーマ Twenty Twenty-Five の子テーマを作って適用

    備忘録、雑感

    WordPress のテーマは何年もクラッシクテーマの Twenty Fifteen を使っていました。そろそろブロックテーマ(ブロックエディター)もこなれて使いやすくなってきただろうと思い、デフォルトテーマ Twenty Twenty-Five (TT5) を適用してみることにしました。しかし、フッターに使わないページの一覧があったり、サイドバーがなくてタグクラウド等を置く場所が見当たらなかったり、そのままでは使えそうにありませんでした。

    参考書がないかAmazonで探したところ、

    という本(電子書籍)がありました。

    出版元のページ(サポート サイト)は、

    Local ( https://localwp.com/ ) で WordPress のローカル環境を作り、ダウンロードした WXR(WordPress eXtended RSS、コンテンツ)をインポートしました。本を読みながら、例示されているように手を動かして操作していきました。はじめは TT5 テーマを直接書き換えていたのですが、もともとの状態がわかりにくかったので、子テーマを作って、子テーマ側で書き換えて練習することにしました。「Create Block Theme プラグイン」を導入すると、GUI で子テーマが作れます。

    本に載っているとおりにブログ サイトとカフェ サイトを両方ともカスタマイズしてみて、だいたいのやり方に慣れました。よくわからずに流したところもありますが……。慣れるまで、かなり大変です。

    このサイト(本番環境)用の子テーマでは、コンテンツとサイドバーをカラムにして並べることにしました。適当にグループ化しつつ、2列のカラムに放り込む感じです。ヘッダー、フッター、サイドバーを非同期のパターンにして作っておき、各テンプレートに挿入しました。

    ヘッダー
    コンテンツ(カラム)
    サイドバー(カラム)
    フッター

    はじめはヘッダー、フッター、サイドバーを同期パターンで作りました。しかし、子テーマをサイトエディターの右上「︙」の「エクスポート」で ”twenty-twenty-five-child.zip” に書き出し、その子テーマを別の WordPress 環境にインポートすると、同期パターンの部分は「ブロックは削除されたか、利用できません」となって消えてしまいました。子テーマ側でパターンを作っても、親テーマ側だけに登録されているようです。

    現時点の環境は、

    • WordPress バージョン 6.7.1
    • Twenty Twenty-Five バージョン: 1.0
    • Create Block Theme バージョン 2.6.0 「注意: このプラグインは現在使用中の WordPress バージョンではテストされていません。」

    仕様なのか、バグなのか、ソフトの相性か、私の操作が悪いのか、なんだかわかりません。

    ということで、面倒ですが、同期パターンではなく、非同期のパターンでブロックを構成していきました。

    グループの「パターンを作成」で同じ名前で追加すればパターンが上書きされるのかと思ったら、全く同じ名前の別のパターンが増えていくのですね。サイトエディターの「デザイン」-「パターン」から、要らないパターンはこまめに「削除」したほうがよさそうです。

    そんなこんなで、このサイトに Twenty Twenty-Five Child テーマを適用してあります。

    サイトをいじったついでに、サイトの目次ページを追加しました。

    (2025/2/2)

  • ローカルにLAMPでWordPressのバックアップを動かそうとしたら

    あるウェブサイトのバックアップをローカルのテスト環境で動かそうとしたら、WordPress のバックアップが動作するまで大変でした。慣れていれば、どうということのない設定なのでしょうが、メモしておきます。間違ったことを書いているかもしれませんが、あしからず。

    WordPress のバックアップ

    WordPress の解説サイトにしたがって実行。

    稼働中のサイトのファイル一式を Filezilla でダウンロード。デフォルトではテキストとバイナリが自動判別なので、常にバイナリの設定にしておいたほうが楽。

    データベースのダンプは、不要で巨大なテーブルは外しておかないと、phpMyAdmin で読み込めるサイズに収まらない(ことがある)。

    LAMP 環境のインストール

    仮想マシンに載せる。サーバへのアクセスはローカルのマシンからしか実行できないという前提の状態。

    ホストは Windows 8.1 Update、64bit の自作PC

    仮想マシンは Oracle VirtualBox 4.3.10

    ゲストは Linux Mint 16 (Petra) Mate, 64 bit

    メニューから「ソフトウェアの管理」( mintInstall 7.5.2 ) で、Apache、MySQL、PHP をインストール。だいたいの手順は、

    • Installing LAMP (Linux, Apache, MySQL and PHP) On Linux Mint – Linux Mint Community
      • Apache 2
        • apach2
          • “It works!” 確認。
        • あとで apache2-doc も導入。http://localhost/manual で日本語マニュアルが読める。
      • PHP 5
        • php5
        • libapache2-mod-php5
          • Apache2 を再起動
          • /var/www/testphp.php の中身: <?php phpinfo(); ?> を表示テスト
        • php5-cli (コマンドライン インタプリタ. 端末での作業用)
      • MySQL
        • mysql-server
          • 「MySQL の “root” ユーザに対する新しいパスワード」を求められるので入力
        • php5-mysql
        • phpmyadmin
          • apache2 自動設定させる
          • 「データベースの管理権限を持つユーザのパスワード」入力
        • なお、libapache2-mod-auth-mysql は存在しない
        • /etc/php5/apache2/php.ini を編集
          • ;extension=msql.so → extension=msql.so (頭の ; を外す)
        • Apache 2 再起動
        • http://localhost/phpmyadmin
          • mcrypt 拡張がありませんと警告。(一応入れてみたが、よくわからない。放置中)

    ローカルのテスト環境の設定

    ここから多重に間違い設定をして数日間の遠回りをしたが、試行錯誤の細かいことは省略。

    ローカルで、 http://dev.example.com/ でアクセスすることを仮定する。example.com にあたるところは、実際には私が実質管理しているドメイン。

    phpMyAdmin で、元のサイトの状態のデータベース名・ユーザ名・パスワードで、作成。wp-config.php 参照。バックアップの SQL 読み込み。WordPress 公式の引越しに関する解説を参照。

    phpMyAdmin で、データベースの wp_options テーブルの siteurl を http://www.example.com/wp から http://dev.example.com/wp に変更。

    ファイル一式を(Filezilla でバイナリ扱いでダウンロードして)適当なディレクトリに置く。例えば、

    /home/myusername/dev.example.com/web/

    としておく。ここがローカルのウェブサイトのルート ディレクトリになる。WordPress は

    /home/myusername/dev.example.com/web/wp/

    にあるものとする。これらのディレクトリやファイルは Apache が読み書きできるようにしておく。WordPress から .htaccess の生成や書き換えができる必要あり。ほかにもファイルの書き込み権限が必要なことが多い。

    テスト用の URL でアクセスできるように、/etc/hosts ファイルのローカル・ループバックを書き換える。

    127.0.0.1    localhost

    を、例えば、

    127.0.0.1    localhost   dev.example.com

    のように、ずらずらと追加していけばよい。localhost の IP アドレス 127.0.0.1 で複数のバーチャルホストを運用できる。もちろん、ローカルのテスト環境用で、外向きのサーバではない。

    ここに記したホスト名を Apache に設定していく。

    設定に関しては、まず、

    /etc/apache2/apache2.conf

    を読む。debian の conf はかなりカスタマイズされているらしく、次のドキュメントを参照せよと書いてある。

    /usr/share/doc/apache2/README.Debian ( *.gz 解凍)

    およそのしくみは、 利用可能な設定ファイル群を、dev.example.com.conf といった任意の名前で、ディレクトリ /etc/apache2/sites-available に書いておき、有効にしたい設定ファイルのリンクだけを /etc/apache2/sites-enabled/ ディレクトリに置くと Apache の設定ファイルの一部として読み込まれるようになっている。有効/無効の切り替え(リンクの作成/削除)はコマンドが用意されていて、

    • a2ensite で有効に(リンクが /etc/apache2/sites-enabled に作成される)
    • a2dissite で無効に(リンク削除)

    名前順で最初に読み込まれるサイト設定ファイル 000-default.conf がデフォルトの設定ファイルで、 /var/www/ にある内容が表示されるようになっている。このファイルは残しておく。バーチャルホストの設定に失敗した時に表示される場所になる。

    /etc/apache2/sites-available/000-default.conf

    このデフォルトのファイルをコピーして書き換える。ファイル名は例えば dev.example.com.conf  としておくが、デフォルトのファイル名より後ろになれば、なんでもよい。コメント行(#…) を除くと、次のような内容。

    <VirtualHost *:80>
    ServerName dev.example.com
    ServerAdmin webmaster@localhost
    DocumentRoot /home/myusername/dev.example.com/web/
    <Directory /home/myusername/dev.example.com/web>
    Require all granted
    AllowOverride All
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>

    <Directory …> … </Directory> は 000-default.conf には存在しない。追加したもの。

    Require all granted については、これがないとブラウザでアクセスした時に「Forbidden」エラーになった。

    Apache 2.4 から大きく変わったらしく、検索してみつかりやすいのは 2.2 までの書式。ただし、2.4 でも従来の書式を有効にできるらしいので、2.4 の設定例だからといってそのまま使えるかどうかはわからない。

    AllowOverride All については、これがないと、「パーマリンクの設定」が「デフォルト」以外の時に、ブラウザでアクセスした時に「Not Found」エラーになった。.htaccess が効かなくなるので、mod_rewrite が効かない状態になってしまう。

    上記のような内容のサイト設定ファイルを作ったら、a2ensite で有効にして、Apache に読み込ませておく。

    sudo a2ensite dev.example.com.conf
    sudo service apache2 reload

    インストール直後のデフォルトでは mod_rewrite が読み込まれない設定になっているので、有効にしておく。

    apache2ctl -M

    でモジュールを調べると、デフォルトでは mod_rewrite は読み込まれていないことがわかる。また、

    /etc/apache2/mods-enabled

    にも存在しない。

    /etc/apache2/mods-available/rewrite.load

    は存在している。これを有効にする。

    sudo a2enmod rewrite
    sudo service apache2 restart

     

    なお、このような設定方式は他に、

    /etc/apache2/conf-available/phpmyadmin.conf
    /etc/apache2/conf-enabled/phpmyadmin.conf

    でも使われている。phpMyAdmin のための .conf はここから読み込まれるようになっている。

    (2014/5/1)

    WordPress 本体とプラグインの更新

    wp-config.php の下の方に追記すれば、ftp サーバがなくても更新できる。

    define('FS_METHOD', 'direct');

    upgrade 用のディレクトリは Apache ( www-data ) が書き込めること。どのディレクトリかはエラー メッセージですぐわかる。ローカルの環境ではパーミッションや所有者の書き換えは簡単なので、よしとしておく。

    vsftpd などのサーバを入れてもよいが、設定ファイルの編集がやや面倒。

    (2014/5/2)

  • WordPress レッスンブック 3.x対応

    こういうときはアフィリエイトのリンクを貼るものなんでしょうが……

    書店に平積みされているだけあって、とても読みやすく、わかりやすく書かれています。オリジナルのテーマを一から作り上げてしまおう、徐々に作り込んでいこうという方法論で書かれています。

    たぶん、こういうのはアジャイルな開発方法というんでしょう。

    空の index.php と style.css ファイルを用意して、そこに一つ一つ書き加え、書き直していきます。一冊の終わりまでやれば、最低限、ブログや静的ページを表示できるテーマができあがります。コードの追加・修正箇所とともにスクリーンショットもあるので、パソコンなしに本だけでも何をやっているのかわかります。

    慣れている人なら、数時間で読めてしまうかもしれません。もっとも、そういう人にはこの本は必要ないかもしれません。私は2日ほどかけて目を通しました。

    WordPress が「テーマ」を介して、どのようにウェブサイトを表示しているのかわかります。WordPress のシステム、PHP、HTML、スタイルシートの関わりが見えてきます。

    一通り通読すると、WordPress Codex 日本語版 や標準のテーマ Twenty Ten / Twenty Eleven が読めるようになっている…かもしれません。

    (2011/8/15)

  • Apache2 mod_rewrite と AllowOverride

    仮想マシン上の WordPress でパーマリンクをデフォルトの (?p=番号) 形式以外にすると動かない件、考えてみるに、

    • Apache mod_rewrite

    が入っていないのかもしれません。

    仮想マシンは Ubuntu 10.04 desktop に tasksel で Apache、PHP、MySQL を入れたもので、WordPress の動作要件を調べていませんでした。

    Apache の mod_rewrite が入っているかどうかの調べ方ですが、ターミナルで httpd -l としたら、そんなコマンドはありませんと言われてしまいました。

    $ ps -e

    でプロセスを調べたら、 apache2 という名前でした。

    $ apache2 -l

    Compiled in modules:
    core.c
    mod_log_config.c
    mod_logio.c
    prefork.c
    http_core.c
    mod_so.c

    ということで、静的には mod_rewrite が入っていません。しかし、 mod_so があるので動的にロードしているかもしれません。

    動的なモジュールも表示してくれる apache2 -M は受け付けてくれませんでした。どうやら、 apache2ctl というコマンドを使うようです。

    $ apache2ctl -v  (バージョン)
    $ apache2ctl -V (バージョン、環境)
    $ apache2ctl -l  (静的モジュール)
    $ apache2ctl -M  (静的・動的モジュール)

    どれも実行可能でした。

    $ apache2ctl -v
    Server version: Apache/2.2.14 (Ubuntu)
    Server built:   Sep 28 2010 12:52:38

    Apache2 のバージョンは 2.2.14 ということです。

    「動的共有オブジェクト (DSO) サポート」というそうですが、今動いているモジュールを調べると、

    $ apache2ctl -M
    apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName
    Loaded Modules:
    core_module (static)
    log_config_module (static)
    logio_module (static)
    mpm_prefork_module (static)
    http_module (static)
    so_module (static)
    alias_module (shared)
    auth_basic_module (shared)
    authn_file_module (shared)
    authz_default_module (shared)
    authz_groupfile_module (shared)
    authz_host_module (shared)
    authz_user_module (shared)
    autoindex_module (shared)
    cgi_module (shared)
    deflate_module (shared)
    dir_module (shared)
    env_module (shared)
    mime_module (shared)
    negotiation_module (shared)
    php5_module (shared)
    reqtimeout_module (shared)
    setenvif_module (shared)
    status_module (shared)
    Syntax OK

    残念ながら mod_rewrite は入っていないようです。

    それで、モジュールをどうやって有効にするのか。

    Google 「ubuntu apache2 mod_rewrite」

    と検索したら、

    $ sudo a2enmod rewrite

    とするようです。man a2enmod で調べると、逆は a2dismod だそうです。実行すると、

    $ sudo a2enmod rewrite
    [sudo] password for … :
    Enabling module rewrite.
    Run ‘/etc/init.d/apache2 restart’ to activate new configuration!

    ということで、apache2 を再起動です。

    $ sudo /etc/init.d/apache2 restart
    $ apache2ctl -M

    rewrite_module (shared)

    mod_rewrite を有効にして再起動に成功したらしいので、WordPress を動かしてみます。

    まだパーマリンクがデフォルトの (?p=数字) 形式しか動きません。

    よく見ると、404 Not Found のページが WordPress ではなく Apache/2.2.14 から報告されています。これはどうやら Apache の設定をいじらなければならないような雰囲気です。WordPress が動き始めたときも、ルートの index.php が有効にならずに index.html が優先されたままだったので、おかしいなとは思っていました。 これは、.htaccess が有効になっていません。

    などで検索。

    これらを参考に、Apache の設定ファイル 「/etc/apache2/sites-available/default」 を sudo gedit で開き、AllowOverride のところを None から All へ変更。

    <Directory /var/www/>
    	Options Indexes FollowSymLinks MultiViews
    #	AllowOverride None
    	AllowOverride All
    	Order allow,deny
    	allow from all
    </Directory>
    

    それから、apache2 を再起動

    $ sudo /etc/init.d/apache2 restart

    これでルートディレクトリの .htaccess が有効になり、WordPress が生成する動的なページ群が有効になりました。日付 + スラッグ のページ指定できちんと見えます。

    (2010.11.13)

  • WordPressの引越―仮想マシンにクローンを作る

    ローカルの仮想マシンに WordPress を引っ越してみます。ふつう逆だろうという突っ込みをしたくなりますね。ローカルでテストしてからインターネットに公開するのが手順というものです。それだといつまでたっても、こんどまた、で永遠に取りかかりそうになかったので…

    に沿ってやればできそうです。

    データのバックアップについては WordPress のバックアップ でやったとおり。

    次が wp-config.php の編集になっていますが、その中身を見ると、MySQL の設定情報です。先にローカルの仮想マシンで、MySQL を最低限は設定してやらなければならないということですので、

    を参照します。仮想マシンの phpMyAdmin は、ゲストの仮想マシン上では

    http://localhost/phpmyadmin/

    や、ホストマシンからなら

    http://192.168.56.102/phpmyadmin/

    でアクセスできるようにしました。「仮想マシンに LAMP を入れる tasksel」や「VirtualBox “ホストオンリー ネットワーク インターフェースの作成に失敗しました”」 で苦労したとおりです。

    WordPress の解説に戻ると、「データベース」から「新規データベースを作成する」。次に「特権」から「新しいユーザを追加する」で追加して、特権をデータベース固有にするらしいのですが、何をやっているのか今ひとつよくわからないので、そのまま引用しておきます。

    1. WordPress 用のデータベースが左側のデータベースドロップダウンリストになければ、作成します:
      1. WordPress データベースの名前を決めて (例えば ‘wordpress‘)、新規データベースを作成するフィールドに入力し、作成をクリックしてください。
    2. 左上のホームアイコンをクリックしてメインページに戻り、特権をクリックしてください。もし WordPres s用のユーザーがまだ存在しなければ、作成します。
      1. 新しいユーザーを追加するをクリックしてください。
      2. WordPress のユーザー名を決めて (例えば ‘wordpress‘)、ユーザー名フィールドに入力します (テキストフィールドの値を利用するがドロップダウンメニューから選ばれていることを確認してください)。
      3. 推測しづらいパスワードを決めて (大文字、小文字、数字、記号を組み合わせたものが理想的です)、パスワードフィールドに入力してください(テキストフィールドの値を利用するがドロップダウンメニューから選ばれていることを確認してください)。それからもう一度入力してくださいフィールドにパスワードを再入力してください。
      4. ユーザー名とパスワードをメモしておきましょう。
      5. グローバル特権のすべてのオプションはデフォルトのままにしておきましょう。
      6. 実行するをクリックしてください。
    3. 特権画面に戻ったら、先ほど WordPress 用に作成したユーザー名の右にある特権を編集アイコンをクリックしてください。データベースに固有の特権セクション内にあるデータベースに特権を追加ドロップダウンから、先ほど作成したデータベース名を選択してください。ページはそのデータベース用に更新されます。すべてチェックするをクリックしてすべての特権を選択したら、実行をクリックしてください。
    4. 結果ページで、ページの上部にあるサーバ:の後に続くホスト名を確認してください (通常は localhost)。

    となっていますが、4 の localhost は、2 でユーザを追加するときに、「ローカル」 localhost を明示的に指定するからそうなるのではないかと思われます(解説には書いてありません)。

    さて、MySQL の設定がうまくいっているのかどうかわかりませんが、ファイルと SQL の編集に移ります。

    wp-config.php を編集します。

    データベースの .sql ファイルをエディタで開き、 www.makisima.org を localhost に置換します。今回はローカルホストで動かしてみることが目的なのでこれでかまいませんが、もともと存在したであろう localhost と区別がつかなくなるので、あまりよい方法ではありません。ユニークな文字列になっていたほうがよいですね。また、 URL としてではなく地の文で www.makisima.org と言及している部分を判別するのは困難です。正規表現を駆使すればできるのかもしれませんが。このあたりの書き分けは、今後、文章を書くときにも考慮したほうがよさそうです。

    WordPress のファイルを仮想マシンにアップロードします。

    アップロード… FTP サーバを入れていませんでした。FTP (に類似のサーバ)を入れてもいいですし、ホストマシンとファイルを共有してもかまいません。ホストとのファイル共有は別項 「ホスト Windows 7 の VirtualBox でゲスト Ubuntu とファイル共有(Guest Additions 導入)」 にて。

    SQL のほうは

    にしたがって行います。ログインは上で作った wordpress 用のアカウントです。

    phpMyAdmin でデータベース名を選択します。その後でインポートする .sql ファイルを選択、アップロード実行します。

    phpMyAdmin でデータベースを選択、さらに ‘wp-options’ テーブルを選択し、’site_url’ と ‘home’ の値を確認します。必要に応じて書き換えます。

    デフォルトの index.html があると、apache がそちらを優先して表示する設定になっているかもしれません。その場合、とりあえずは index.html の名前を変えてブラウザのキャッシュを消去すれば WordPress の index.php が表示されるようになります。実際には、Apache の設定で AllowOverride None になっていて .htaccess が有効になっていない可能性が高いと思われます。(cf. Apache2 mod_rewrite と AllowOverride

    WordPrss がサブディレクトリにインストールされていて、それでもトップになるようにしている場合、つまり、

    のようになっている場合は、サブディレクトリの URL に相当するアドレスのほう( http://localhost/wp/ )で WordPress にログインできるかもしれません。ログインは WordPress のユーザ名で行います。WordPress の管理画面になれば、とりあえず再設定できるようになります。仮想マシンの localhost のルート (/var/www)  に .htaccess や index.php をきちんとコピーして設定する必要があります。

    .sql をアップロードしたあとの設定方法は、なんとなくやっているうちに WordPress が動くようになったので、何がどう功を奏しているのかわかりません。クローンが仮想マシンで動いたので結果オーライということで…  🙂

    サブディレクトリに配置した頃のメモ書きは wiki (第2巻)のほうです。

    さて、すくなくとも、バックアップの方法が間違っていないこと、バックアップから復元できること、サーバの引越ができることは確認できました。これで、テスト用のサーバとして仮想マシンが使えます。

    と喜んでいたら、パーマリンクが「デフォルト」 (?=数字)でないと動きません。とほほ。ということで、続きます……

    (2010.11.13)

検索(WordPress内)

カテゴリー一覧

マキシマ文庫

Makisima Library, Vol.3

Twenty Twenty-Five Child

Proudly powered by WordPress