以前よりWordPressのメディア挿入時の設定値が標準では下記のようになっていて、画像を挿入の際に勝手に画像へのリンクが入ってしまうという地雷がありました。
これをお約束のカスタマイズで、テーマのfunctions.phpに下記のように記述し、設定値を変えていました。
function default_attachment_display_settings() { update_option( 'image_default_align', 'none' ); // 配置 update_option( 'image_default_link_type', 'none' ); // リンク先 update_option( 'image_default_size', 'full' ); // サイズ } add_action( 'after_setup_theme', 'default_attachment_display_settings' );
しかし、いつのWordPressのバージョンからか、これが効いてないような気がするのでWordPressのコードを洗ってみたのですが、どうやら、Cookieに保存されているユーザ毎の設定で、1つ前のメディア挿入時の値で上書きしているようです。具体的には、下記の箇所。
/** * Reset the attachment display settings defaults to the site options. * * If site options don't define them, fall back to a persistent user setting. * * @since 3.5.0 */ resetDisplays: function() { var defaultProps = wp.media.view.settings.defaultProps; this._displays = []; this._defaultDisplaySettings = { align: getUserSetting( 'align', defaultProps.align ) || 'none', size: getUserSetting( 'imgsize', defaultProps.size ) || 'medium', link: getUserSetting( 'urlbutton', defaultProps.link ) || 'none' }; },
以前は、この箇所にgetUserSetting関数がなく、update_optionで変更していたdefaultPropsがそのままセットされていたと思うんですが、それをgetUserSetting関数で上書きしているようです。コメントから見るとバージョン3.5からこうなったんでしょうか。
そこで、下記のカスタマイズを行ったら投稿編集ページを開いたときだけの限定ですが、WordPress4.7でもうまくリセットできました。
function default_attachment_display_settings2() { $ob = "<script type='text/javascript'>"; $ob .= "if ( typeof setUserSetting !== 'undefined' ) {"; $ob .= sprintf("setUserSetting( 'align', '%s' );", 'none'); // 配置 $ob .= sprintf("setUserSetting( 'urlbutton', '%s' );", 'none'); // リンク先 $ob .= sprintf("setUserSetting( 'imgsize', '%s' );", 'full' ); // サイズ $ob .= "}"; $ob .= "</script>"; echo $ob; } add_action( 'admin_print_footer_scripts', 'default_attachment_display_settings2' );
上記は、管理画面を開いたときに強引にユーザ毎の設定をリセットしてますが、開いたときしか発動しないので、同じ投稿編集で複数の画像を挿入の際は1つ前のメディア挿入時の値で上書きされてしまいます。PluploadのどこかのハンドラでsetUserSettingしていると思いますのでそれを解除かリセットしてあげればこの事象もなくなるとは思いますが良い方法を見つけることができませんでした。