1. TOP
  2. Wordpress

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

[Wordpress] 自動で読み込まれるjavascriptコードの追加・削除

カテゴリ:
Web
Wordpress
| トラックバック(0)
投稿者:yo yo
/**
 * 自動で読み込まれるjavascriptコードの整理
**/
function load_cdn() {
	if ( !is_admin() ) {
		// 削除
		wp_deregister_script('jquery');
		wp_deregister_script('wp-a11y');
		// 追加
		wp_enqueue_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js', array(), '1.6.1');
	}
}
add_action('init', 'load_cdn');

[Wordpress] 最新版では既に必要ないヘッダ内の不要なコードを削除するremove_action

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

もはや最新版ではfunction.phpへ記述する必要がないヘッダ内の不要なコードを削除するremove_action一覧

    remove_action('wp_head','index_rel_link');
    remove_action('wp_head','start_post_rel_link');
    remove_action('wp_head','wp_print_styles');
    remove_action('wp_head','wp_print_head_scripts');

対象のアクションフックは既に非推奨になっている。プラグインなどで利用していない限りは削除しても問題なさそう。

codex.wordpress.org - Category:Deprecated_Functions

[Wordpress] 管理画面の投稿・カスタムポスト一覧に独自カラムを追加する

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

管理画面投稿一覧に「カラムラベル」を追加

/**
* 管理画面投稿一覧に「カラムラベル」を追加
*
* @param	array	$columns
*/
function add_custom_column_label( $columns ) {
  $columns['customlabel'] = 'カスタムラベル';
  return $columns;

  /* *******
  	// リファレンスではこう書いてある。
    return array_merge( $columns, array('customlabel' => 'カスタムラベル') );
  ******* */

}
// 投稿タイプ post へ追加する場合
add_filter( 'manage_post_posts_columns', 'add_custom_column_label' );
// カスタム投稿タイプ hoge へ追加する場合
//add_filter( 'manage_hoge_posts_columns', 'add_custom_column_label' );
// 全ての posts へ追加する場合(全ての固定ページが対象だったらpostsをpagesに変更する)
//add_filter( 'manage_posts_columns', array( $this, 'add_custom_column_label' ) );

リファレンス:Plugin API/Filter Reference/manage posts columns

管理画面投稿一覧に「カスタムラベルに対応する列」を追加

/**
* 管理画面投稿一覧に「カスタムラベルに対応する列」を追加
*
* @param	string	$column_name	The name of the column being rendered.
* @param	int		$int			The ID of the post being rendered.
* @since	1.8
*/
function add_custom_column_body( $column_name, $post_id ) {
	if($column_name ==='customlabel'){
	  echo 'カスタムラベルに対応する列の内容を表示できます';
  }
}

// 投稿タイプ post へ追加する場合
add_filter( 'manage_post_posts_custom_column', array( $this, 'add_custom_column_body' ), 20, 2 );
// カスタム投稿タイプ hoge へ追加する場合
//add_filter( 'manage_hoge_posts_custom_column', array( $this, 'add_custom_column_body' ), 20, 2 );
// 全ての posts へ追加する場合(全ての固定ページが対象だったらpostsをpagesに変更する)
//add_filter( 'manage_posts_custom_column', array( $this, 'add_custom_column_body' ), 20, 2 );

リファレンス:Plugin API/Action Reference/manage posts custom column

ページの先頭に戻る