タグ: Wordpress

  • Ubuntu ServerのOSをアップグレードしたら、WordPressでエラー

    Ubuntu ServerのOSを、20.04から、22.04、24.04と同じ日にアップデートを実施した。実施のときにPHPのバージョンも変わったので、いろいろと対処した。Wordpressの表示もできるようになったのだが・・・管理画面にログインしようとしたら、下記のエラーが。

    エラー詳細
    ===============
    エラータイプ E_ERROR が /var/www/html/sitename/wp-content/themes/muum_tcd085/functions/theme-setup.php ファイルの 65 行目で発生しました。 エラーメッセージ: Uncaught Error: Call to undefined function simplexml_load_string() in /var/www/html/sitename/wp-content/themes/muum_tcd085/functions/theme-setup.php:65
    Stack trace:
    #0 /var/www/html/sitename/wp-content/themes/muum_tcd085/functions/update_notifier.php(15): get_tcd_update_notifier_xml()
    #1 /var/www/html/sitename/wp-includes/class-wp-hook.php(324): tcd_update_notifier_admin_menu()
    #2 /var/www/html/sitename/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters()
    #3 /var/www/html/sitename/wp-includes/plugin.php(517): WP_Hook->do_action()
    #4 /var/www/html/sitename/wp-admin/includes/menu.php(161): do_action()
    #5 /var/www/html/sitename/wp-admin/menu.php(423): require_once('...')
    #6 /var/www/html/sitename/wp-admin/admin.php(159): require('...')
    #7 /var/www/html/sitename/wp-admin/index.php(10): require_once('...')
    #8 {main}
      thrown

    この65行目をみると、

     $xml = simplexml_load_string( $cache_data );

    なので、XML関連ということがわかった。

    php8.3の状況を調べてみると、「php8.3-xml」がインストールされていない。なので、

    sudo apt install php8.3-xml

    で、インストールを行って、再起動。これで管理画面に入れるようになった。

    あと、Wordpressのサイトヘルスから足りていない推奨モジュールを表示して、aptでインストールした。

  • WordPressで公開中の固定ページを下書き(編集)してプレビューしてから公開したい

    個人サイトだと気にしないのだが、コーポレートサイトとかキャンペーンサイトだと、公開したページを修正して、修正確認をしてから公開したい、ということがよくある。Wordpressの標準機能だと、一度公開してしまうと、下書きには戻せるが、公開したままの下書き保存はできない。固定ページなら、同じように作って、差し替え、も考えたがめんどくさすぎる。

    不本意だが、プラグインを使って便利に解決する方法にすることにした。そのため、プラグインを調査し、用途にあったものを探した。いろいろと調べて、候補を3つに絞った。

    PublishPress Revisions
    https://ja.wordpress.org/plugins/revisionary/

    評価もよく、更新もされている。
    プラグイン名で検索すると、記事は少なめ。
    公開記事に対して、更新の予約投稿ができるのがよい。
    公開記事のリビジョン管理がメインなので、コーポレートサイトのようなところでWordpressを使っている場合にはよさそう。
    インストール時に同じシリーズのものがたくさん出てくるので注意。

    Yoast Duplicate Post
    https://ja.wordpress.org/plugins/duplicate-post/

    評価もよく、更新もされている。
    プラグイン名で検索すると、記事もいろいろと出てくる。
    記事のコピー機能としても使えるようなので、記事のコピーがメインの場合はこれでもよいかも。

    WP Post Branches
    https://wordpress.org/support/plugin/wp-post-branches/

    評価もよく、紹介記事も多い。Wordpress、公開記事、下書き、みたいな検索ワードで調べると上位に出てくる。
    ただし、更新が5年前で止まっていて、新しいバージョンのWordpressでテストされていない。
    WordPressの更新で不具合が出る可能性が大きい。
    惑わされないようにしないといけない。

    いろいろと調べて、悩んで、公開記事の編集と事前確認がメインになるため、「PublishPress Revisions」を選択した。使い方などは、下記のサイトを参考に。

    https://tcd-theme.com/2021/04/publishpress-revisions.html

    個人的にはプラグインは極力いれたくない派。プラグインが増えると、Wordpressのバージョンアップで不具合になる可能性が高くなるので。それでもプラグインを入れないと実現できないことも多いので、慎重に選んで使う。

  • さくらのレンタルサーバのWordPress管理画面にアクセスすると403エラーがでる

    さくらインターネットのレンタルサーバに、Wordpressを入れたのだが、海外(ベトナム)から、Wordpressの管理画面にアクセスすると、Nginxが403エラーを返す。

    さくらインターネットのウェブサーバは、「Apache/2.4.54」と表示されているので、なぜNginxが403エラーを返すのが不思議で、いろいろと調べた。疑ったのは、どこか別のサーバにアクセスさせられているのではないかと(DNSサーバの汚染を心配していた)。

    Tracerouteや名前解決などを行っていった結果、正常にさくらインターネットのサーバにアクセスしようとしていることはわかった。管理画面は表示されなくても、通常のWordpressのコンテンツは正常に表示されていた。さくらインターネットのレンタルサーバの管理画面に、「国外IPアドレスフィルタ」の設定があり、これがデフォルトでオンになっていた。これが403エラーを返す原因だった。「国外IPアドレスフィルタ」の設定を無効にするか、許可アドレスリストに加えることで、海外からでもWordpressの管理画面にアクセスできるようになった。

    IPアドレスでのアクセスフィルタリングのために、Nginxによるリバースプロキシ的なものがかまされているようだ。

  • WordPressのプラグイン更新中に誤ってページ移動してしまい、ずっとメンテナンスモードになったときの対処

    WordPressでプラグインの更新中に、うっかりページ移動をしてしまった。そうしたら、メンテナンスモードのままになり、下記のメッセージが表示されるだけになった。

    現在メンテナンス中のため、しばらくの間ご利用いただけません。

    これの対処は、Wordpressがインストールされている(配置されている)ディレクトリにある「.maintenance」のファイルを消す。

    これがあるとメンテナンスモードとして認識されてしまうので、消す必要あり。

    rm .maintenance

    消した後は、Wordpressにアクセスして、メンテナンスモードが解除されたことを確認する。そして管理画面にアクセスして、残っているアップデートを実施する。

    例)

    zen@xxxxxx:/var/www/html/blog$ ls -a
    .             readme.html           wp-content         wp-settings.php
    ..            wp-activate.php       wp-cron.php        wp-signup.php
    .maintenance  wp-admin              wp-includes        wp-trackback.php
    0.txt         wp-blog-header.php    wp-links-opml.php  xmlrpc.php
    index.php     wp-comments-post.php  wp-load.php
    inf2.php      wp-config-sample.php  wp-login.php
    license.txt   wp-config.php         wp-mail.php
    zen@xxxxxx:/var/www/html/blog$
    zen@xxxxxx:/var/www/html/blog$
    zen@xxxxxx:/var/www/html/blog$ rm .maintenance
  • 読了:Web Designing 2022年4月号

    特集の「CMS新時代2022」が気になり読んだ。世の中の課題は、似たりよったりで、それを解決する1つがヘッドレスCMSなわけか。コンテンツを管理する部分のCMSと、表示するデザインを分離させてしまえばよいというのは解決策の一つ。

    それから、ノーコードWeb制作ツールものびている。ノーコードWeb制作ツールを使うことで、スピード重視で、ユーザ側で、デザイン性の高いウェブサイトが作れる。ただし、デザインのセンスは作る側に必要。ノーコードWeb制作ツールとヘッドレスCMSは競合ではなく、そもそもニーズが異なる。

    以下はメモ。

    • 更新が少ないデザイン重視は、CMSで管理せず、作成する(=自由度が高く作れる)
    • ヘッドレスCMSにして、API経由でコンテンツデータを取り出せるようにすることで、ワンソース、マルチユースができる。
    • ワンソース、マルチユースだからといって、全部のコンテンツを一律にマルチユースするのはよくない。コンテンツごとにマルチユースされる先を決める。
    • ヘッドレスCMSのフロントエンドの流行りはJamStack。静的コンテンツにして配信するので、ユーザがアクセスしてくるときの応答が早い。
    • JamStack=JavaScript、API、Markupを使ったStack構成。
    • ヘッドレスCMSにJamstackは必須ではない。フロント側はなんでもいい。
    • ヘッドレスCMSは、特化したCMS(SaaS)もあるし、WordpressにAPIをいれてヘッドレスCMS化もできる。
    • ヘッドレスCMSを使った開発は、開発費用は安くなるわけではない。技術もことなるため、2〜3割高くなるケースもあり。
    • ヘッドレスCMSの場合、CMSで管理されていない部分の変更には、コードも絡む変更が必要になる。(CMSで管理されないページの頻繁な更新には向かない)
    • ノーコードWeb制作ツールは、STUDIOが自由度が高く、伸びている。デジタル庁でも採用され、更新の内製化がされている。
  • メモ:BASEとWordPressの違いが語られている記事。

    ショッピングサイトを、BASEで作るか、Wordpressを使ってつくるかが語られている記事。シンプルで、要点がまとまっていて、いい内容だった。

    BASEとWordPressの違い
    https://mip.y-ml.com/_bcn?id=1001

    BASEか、Wordpressか、で比較されているけれど、BASEではなくて、Shopifyでも基本的には同じ。Wordpressのところは、自社開発のECサイトやEC Cubeに読み替えても、結論としては同じになる。手数料を気にしないのであれば、ECショップの立ち上げは、BASEやShopifyだろう。結局、サイトのセキュリティやバージョン管理にどれだけ手間をかけられるのか、立ち上げ速度は同じにできるのか、などを考えるとSaaSであるBASEやShopifyの方が有利だから。

    だけど、ショップサイトが主体ではなくて、製品紹介やコンセプト紹介がメインであれば、Wordpressの方が有利になる。世界観を作りやすいので。その場合は、EC用の何かをWordpressに組み込むよりも、BASEやShopifyのページに飛ばしたほうが簡単だし、安全であるけれど。

  • リバースプロキシを使ったWordPressのアクセスでハマる

    リバースプロキシの後ろにWordpressをおいて、リバースプロキシ経由でアクセスさせようとしたところ、ハマった。いろいろと試しているが、現在進行系で格闘中だ。

    事象としては、

    • インストール時に、Wordpressのホスト名が「127.0.0.1:8080」で登録されてしまい、ログインしようとすると、127.0.0.1にアクセスしようとしてしまい、アクセスできず。
    • 上記の問題は、DBを直接書き換えることで対処するが、トップページにアクセスすると、「127.0.0.1」にリダイレクトされる。
    • WordPressのCSSの一部と、画像が表示されない

    という具合だ。前がNginxで、後ろがApache2.4。WordpressをCDNで配信するときの設定も試したが、うまく行かず。たぶん、根本的に何かが欠けていると思われる。簡単と思っていたけれど、思わぬところでハマるものだ。最初から考え直し。

  • TCDテーマのアップデート(ウェブ上でやる)

    TCDで購入したWordpressのテーマをアップデートする方法。アップデートの方法自体は、公式サイトで公開されているが、周辺部分も含めたメモとして。

    1. WordPressの管理画面にアクセスする
    2. 「外観」から「テーマ」を選択する
    3. 現在、使っているTCDのテーマではなく、別のテーマ(例えばTwenty Twenty-Oneなど)を有効化する
    4. この時点で、サイトのデザインおよびレイアウトは崩れる。TCDのテーマで個別設定した内容(パラメータ)は消えない。
    5. 使っていたTCDのテーマを選択する(テーマの詳細が表示される)。
    6. 「削除」をクリックして、テーマを削除する。
    7. テーマから「新規追加」をクリックする。
    8. 「テーマのアップロード」をクリックして、新しいバージョンのTCDテーマを指定して、「今すぐインストール」をクリックする。
    9. インストール後に有効化する。
    10. サイトを開いて、デザインなどを確認する。

    この方法は、とても楽。詳しくない人でも、作業ができる。欠点は、一度、別のテーマにすることより、サイトの見た目が崩れること。

    あと、インストールしていたテーマを一度削除するので、設定データが消えるのではないか、というドキドキ感が大きい。

    企業用のサイトの場合、短時間でも、見た目が崩れるのが許容できなければ、この方法は採用できない。SFTPなどによるテーマの直接的な上書きインストールでの対応が必要になる。

  • TCDテーマのアップデート(企業向け)

    前提として、SFTPなど、直接Wordpressのインストールディレクトリにアクセスできる権限が必要。また、既存のテーマのアップデート権限を持っている必要がある。

    この方法であれば、見た目が崩れることなく、テーマのアップデートができるため、企業向けのサイトなどには適している。

    (前準備)

    1. WordPressの管理画面にアクセスする
    2. 「外観」から「テーマ」を選択する
    3. 使っていたTCDのテーマを選択する(テーマの詳細が表示される)。
    4. テーマのバージョンが表示されているので、確認する。

    (テーマの更新)

    1. WinSCPなどのツールを使い、Wordpressの設置されたサーバにアクセスする。
    2. WordPressが設置されたディレクトリにアクセスし、「wp-content」の「themes」を開く。
    3. TCDから落としてきたテーマのZIPファイルを解凍する
    4. 同じフォルダ名のテーマに対して、上書きでアップロードする。上書きできれば、アップデートは完了。上書きできなければ、ファイルのパーミッションを見直す。

    (テーマ更新後の確認)

    1. WordPressの管理画面にアクセスする
    2. 「外観」から「テーマ」を選択する
    3. 使っていたTCDのテーマを選択する(テーマの詳細が表示される)。
    4. テーマのバージョンが表示されているので、確認する。このとき、アップロードしたテーマのバージョンが表示されていれば、バージョンアップは成功。
    5. 実際にウェブサイトを確認し、ずれなどがないかを見る。
  • WordPressのテンプレートのバージョンをあげたら、エラーになった

    WordPressで、独自インストールしていたテンプレートのバージョンをあげたところ、下記のエラーになった。

    Warning: file_exists(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP? in /*********/wp-content/themes/simplicity2/functions.php on line 214
    

    PHPにOpenSSLのモジュールが入っていなかったのが原因。なので、インストールして、解消した。

    pkg search php73 | grep openssl
    pkg install php73-openssl-7.3.27
    apachectl restart