[Wordpress] update_attached_fileは$fileが既存値と同じだとfalseを返す?

カテゴリ:
Web
Wordpress
| トラックバック(0)
投稿者:yo yo

update_attached_file( $attachment_id, $file )の$fileが既に登録されているファイルパスと同じだとfalseを返す様だ。

Wordpressで画像を投稿していくとデフォルトではuploadsディレクトリに画像ファイルが追加されていく。サムネイルが多いとuploadsディレクトリが画像ファイルだらけでとても面倒くさい。

サーバを移管したい時とか、他のCMSに乗り換えたい時とか、とても苦労する。FTPソフトでディレクトリを開くことすら出来なくなる、面倒くさい。サーバOSがLinuxだとファイル名の大文字と小文字を区別し、同名の別ファイル(例えば、Image.jpgとimage.jpg)が存在することになり、ローカルのWindowsとかに一括ダウンロードする時とか違うファイルなのに同一ファイルとして認識されて上書きされる、面倒くさい。書いてて訳解らなくなってきたけどそういう事だ。

なのでちょっとでもメディアの管理を楽にする為に、既にアップロードしてしまったメディアの保存先を管理画面上から変更できるプラグインを作る事にする。探しても見つからないのは何故だ。

だいたいの設計図

  1. メディアライブラリでチェックボックスをつける。
  2. 一括操作(bulkアクション)でAjaxを呼び出す。
  3. AjaxからPHPを呼び出してアップロードしたメディアのディレクトリを適当な所(※)へ移動させる。
  4. ついでにメディアライブラリに関するDB周りを更新する。
  5. Ajaxでフィードバックを返す。
  6. あとは流れで。

現状で最低限の機能は出来ているので面倒くさくなる前に作りきらなければならない。

こんなん出来たらいいな

  • 移動先ディレクトリをパーマリンク構造のように指定できたらいいな
  • オリジナルファイルだけじゃなくサムネイルも一緒に移動されるといいな
  • uploadsディレクトリ直下のファイルだけ移動できたらいいな
  • nonceを利用してセキュリティを向上させられたらいいな
  • 今回はとくには必要ないけど投稿に追加した画像のURLが自動で変更されるといいな

[Wordpress] 本文空で下書き保存するとカスタムフィールドに入力した値が消える

カテゴリ:
Web
Wordpress
| トラックバック(0)
投稿者:yo yo

Wordpressでカスタムフィールド操作系のプラグインを入れている。本文空で下書き保存するとカスタムフィールドに値だけ入れて下書き保存すると値が消える現象がたまに起こる。困った。

バグなのか何なのか解らないがiOS11でアプリ(メーラーなど)のブラウザでinput type="file"を押すとブラウザが解除されアプリに戻ってしまう問題がある。解決策が解らず困る。

今回問題があったのはiOSアプリでサイボウズkunaiと何かしらのメーラー。お客様からの問い合わせから発覚した。

[その他] windowsのjpegtranをで使うバッチファイル

カテゴリ:
Web
その他
| トラックバック(0)
投稿者:yo yo

windowsのjpegtranをで使うバッチファイルを丸々コピペになっちゃうけどメモ。似たようなのでoptipngとかもいけると思う。

Windows で使える jpegtran 用上書き bat ファイル。 – o6asan's soliloquy-part2

  @echo off
  setlocal enabledelayedexpansion
  pushd %~dp0
  for %%a in (%*) do (
    echo %%~na%%~xa
    set OUTFILE=%%~na%%~xa
    jpegtran -copy none -optimize -outfile "!OUTFILE!" %%a
    for %%b in ("!OUTFILE!") do set FILESIZE=%%~zb
    if "!FILESIZE!" LSS %%~za (copy "!OUTFILE!" %%a>nul)
      del "!OUTFILE!"
  )
  popd
  exit
  

詳しくは元記事を見てください。

ディレクトリ位置の格納と取り出し。これでバッチファイルが置かれている場所をカレントディレクトリに出来る。

// カレントディレクトリをバッチファイルが置かれた場所に変更
pushd %~dp0
~~~~
// 移動する前のカレントディレクトリへ戻る
popd
ページの先頭に戻る