WEB

phalcon3から5にバージョンアップした際のページネーション対応

phalcon3から5にバージョンアップした際にページネーションで発生したエラー、Deprecated対応

Call to undefined method Model::getPaginate()

Call to undefined method Phalcon\Paginator\Adapter\Model::getPaginate()のエラー対応

total_pages

PHP Notice:  Access to undefined property Phalcon\Paginator\Repository::total_pages

https://docs.phalcon.io/4.0/ja-jp/upgrade#paginator
total_pagesがなくなって、lastを使う

before

PHP Notice:  Access to undefined property Phalcon\Paginator\Repository::before

https://docs.phalcon.io/4.0/ja-jp/upgrade#paginator
beforeがなくなって、previousを使う

そのほかのアップグレードで発生したエラー対応

【WordPress】SiteGuardのログイン認証画像が表示されないときの対応

WordPressのプラグインでSiteGuardを使用していて、急にログイン認証画像が表示されなくなりました。
ログインできなくて困る。。

ログインできない現象

ログイン画面の認証画像が表示されず、何を入力していいかわからない。
404 Not Foundで画像が表示されていないようです。

ログイン画面でSiteGuardの認証画像が表示されない

ログインできるように対応

サーバにSSHでログインしてプラグインを無効してください。
プラグインを無効にするには、ディレクトリ名を変更すればOKです。

wordpressのrootディレクトリに移動してから、

$ mv DocumentRoot/wp-content/plugins/siteguard DocumentRoot/wp-content/plugins/siteguard.hold

これでSiteGaurdが無効になってログインできます。

再度SiteGuardの画像認証を有効

ログイン後に先ほど変更したディレクトリ名を元に戻します。

$ mv DocumentRoot/wp-content/plugins/siteguard.hold DocumentRoot/wp-content/plugins/siteguard

そのあと、SiteGuardの設定から画像認証をONにします。
が、エラーメッセージが表示されてしまいます。

SiteGuardの画像認証の設定ONが画像ファイル書き込みで失敗

認証画像の書き込みに失敗しているので、書き込み先のディレクトに権限を付与。

で、どこに認証画像を書き出すのか?
SiteGuardのバージョン1.7.5では「wp-content/siteguard/」配下に画像を書き出します。

wp-content配下にそもそもsiteguardというディレクトリーがないので作ります。
wp-contenfの権限を上げるのは微妙なので。

$ mkdir wp-content/siteguard
$ chmod 777 wp-content/siteguard

※所有者:グループは適時変更してください。

これで、画像認証をONにできます。
お疲れさまでした!

Call to undefined method Phalcon\Paginator\Adapter\Model::getPaginate()のエラー対応

Phalcon 5.xにバージョンアップした際に以下のエラーが発生

Call to undefined method Phalcon\Paginator\Adapter\Model::getPaginate()
#0 [internal function]: App\Controllers\RecipeController->searchAction()
#1 [internal function]: Phalcon\Dispatcher\AbstractDispatcher->callActionMethod()
#2 [internal function]: Phalcon\Dispatcher\AbstractDispatcher->dispatch()
#3 {pathto}/public/index.php(30): Phalcon\Mvc\Application->handle()
#4 {main}

getPaginate()エラーの対応方法

Phalcon 4.xにアップグレードされたときにfunction名が変わったようです。
https://docs.phalcon.io/4.0/ja-jp/upgrade#paginator

getPaginate()からpaginate()に変更

call_user_func()エラー発生

続いて以下のエラーが発生

call_user_func(): Argument #1 ($callback) must be a valid callback, first array member is not a valid class name or object
#0 [internal function]: call_user_func()
#1 {pathto}/controllers/RecipeController.php(65): Phalcon\Paginator\Adapter\Model->paginate()
#2 [internal function]: App\Controllers\RecipeController->searchAction()
#3 [internal function]: Phalcon\Dispatcher\AbstractDispatcher->callActionMethod()
#4 [internal function]: Phalcon\Dispatcher\AbstractDispatcher->dispatch()
#5 {pathto}/public/index.php(30): Phalcon\Mvc\Application->handle()
#6 {main}

これは、new Phalcon\Paginator\Adapter\Model()の時に渡すパラメータが間違っているため。
phalcon 5.xの使い方に合わせて以下の3つのどれかに修正する必要があります。

注意点として、Phalcon\Paginator\Adapter\Modelは多数のレコードのページネーションに使わないでとなっているので、DBからデータを取得してページネーションを使うならPhalcon\Paginator\Adapter\QueryBuilderにしとくのが良さげです。

【WordPress】Customizer Export/Importでインポートした内容を削除する方法

WordPressのプラグイン「Customizer Export/Import」を使用して、インポートした内容・設定を削除する方法をご紹介します。

Customizer Export/Importでインポートした内容を削除は、他のプラグインを使用することで削除できます。

インポートしたけど、一旦なかったことにしたい、無効化したいという方は参考にしてみてください。

Customizer Export/Importの設定リセット

Customizer Export/Importの設定をリセット(削除)するには、「Customizer Reset」というプラグインを使用することでリセット可能です。

Customizer Export/Importでは、インポートもしくはエクスポートしかできないので要注意です。

リセット手順は簡単です。

  1. まずは、プラグインの新規追加で「Customizer Reset」で検索して、インストール&有効化してください。
  2. その次に、「外観」>「カスタマイズ」と進んでください。
  3. 左側のサイドメニュー上部に「Reset」ボタンが表示されていると思うのでクリック。

これで、Customizer Export/Importでインポートした内容をリセット(削除)できます。

削除後に、またインポートできますのでお好きなものをインポートとしてください。

以上です。良きWordpressライフを!

WordPressのウィジェットが使いづらい!従来のウィジェットに戻す方法

WordPressがまた使いづらくなりましたね。

WordPressのバージョン5.8になったあたりから、外観のウィジェットがものすごく使いづらさアップ。
見づらいし、設定しづらいしでなんでこうしたのって感じです。テーマによってはデザインが変わってしまったりするので困ってる方もいるのではないでしょうか。

プラグイン導入で解決できたのでメモ。

使いづらい点

まずは、使いづらいと思った点。

1. 単純に見づらい(個人的な感想)
2. ブロックの概念がわかりづらい
3. 柔軟性が増してるようでめんどくさい

カテゴリーのリンクを表示するのにも、タイトルとカテゴリーリンクを別々に設定しなきゃいけなかったりします。
柔軟性アップのようにも感じますが、1つにまとめるならグループ化したり、しなかったら削除がめんどくさかったりとあまりメリットを感じられませんでした。

対応方法

対応方法として「Classic Widgets」というプラグインが良かったです。
ウィジェット編集ページがバージョンアップする前の旧バージョンになります!

ドラッグ&ドロップする使い方もしてたので、旧バージョンの方が好みです。

「Classic Widgets」のプラグインは、インストールして有効化すればOK!

Classicつながりで記事投稿を旧バージョンに戻す方法はこちら
WordPressで「>」などが勝手にエスケープされる問題を解決する方法

良きWordpressライフを!