メディアを投稿に挿入するときに、Media-Libraryのデフォルトビューを「すべてのメディアアイテム」から「この投稿にアップロード」に変更する方法はありますか?
この質問が抽出された別のスレッドがあります: 添付ファイルの関係を管理する方法
メディアを投稿に挿入するときに、Media-Libraryのデフォルトビューを「すべてのメディアアイテム」から「この投稿にアップロード」に変更する方法はありますか?
この質問が抽出された別のスレッドがあります: 添付ファイルの関係を管理する方法
回答:
私の以前の回答には2つの小さな間違いがありました。
change
親のイベントをトリガーするのを忘れました。修正されたコードは次のとおりです。
<?php
/**
* Plugin Name: Pre-select post specific attachments
*/
add_action( 'admin_footer-post-new.php', 'wpse_76048_script' );
add_action( 'admin_footer-post.php', 'wpse_76048_script' );
function wpse_76048_script()
{
?>
<script>
jQuery(function($) {
var called = 0;
$('#wpcontent').ajaxStop(function() {
if ( 0 == called ) {
$('[value="uploaded"]').attr( 'selected', true ).parent().trigger('change');
called = 1;
}
});
});
</script>
<?php
}
Add Media
ボタンをクリックしても機能しますが、ボタンをクリックしても機能しませんSet featured image
。そこでも動作させる方法はありますか?
wp.media.view.UploaderWindow.prototype.on('ready',function() {console.log(jQuery('.media-modal-content'))...your code here...});
は、より適切です。
上記のJSの唯一の問題は、ページがロードされ、すべてのメディア項目のダウンロードが既に開始された後に、選択ボックスを切り替えて変更をトリガーすることです。遅いT1のクライアントの場合、ALL MEDIA TIMESとUPLOADED TO THIS POSTアイテムの両方を一緒にダウンロードするため、これはロックされました。
Post Thumbnail Editor Plugin を開発している偉大なSewpaflyの助けを借りました。彼は、すべてのメディア項目のロードを防ぎ、デフォルトで「このポストにアップロードされた」イメージのみをロードするJSを共有しました。
ファイル: myadmin.js
jQuery(function($) {
var called = 0;
$('#wpcontent').ajaxStop(function() {
if ( 0 == called ) {
$('[value="uploaded"]').attr( 'selected', true ).parent().trigger('change');
called = 1;
}
});
var oldPost = wp.media.view.MediaFrame.Post;
wp.media.view.MediaFrame.Post = oldPost.extend({
initialize: function() {
oldPost.prototype.initialize.apply( this, arguments );
this.states.get('insert').get('library').props.set('uploadedTo', wp.media.view.settings.post.id);
}
});
});
ファイル: functions.php
add_action('admin_enqueue_scripts', 'add_admin_js');
function add_admin_js() {
wp_enqueue_script('admin_js', get_bloginfo( 'template_directory' ) . '/js/admin.js');
}
GitHubの同じコード:https : //gist.github.com/fishnyc22/5593693
それをJSファイルにドロップし、admin.enqueue_scriptsを使用してfunctions.phpで呼び出しました。PHPとJSの両方については、上記のGISTを参照してください。
見事に動作します。うまくいけば、素晴らしいワードプレスの人々が次のアップデートでこれを修正することを願っていますが、今のところ、Sewpaflyが私が見つけた最良のソリューションを持っています。再びバディに感謝します。
私は、膨張を使用および防止していないため、ビューアがデフォルトで無効にした(0,0に設定した)MEDIUMサイズの画像になっていることを発見したことに注意してください。中サイズが利用できない場合、ワードプレスはフルサイズの画像をロードします。以来、中サイズを有効にしています。
@toschoああ、私はあなたのコードにバグを見つけました。私と一緒に裸にしてください。問題を再現するには、以下を正確に実行します。
1)ドラフト投稿を開きます。
2)ボタンをクリックしAdd Media
ます。jQuery関数がロードされるのを待ちます。
3)左側で、Set Featured Image
リンクをクリックします。
4)[メディア]ポップアップウィンドウを閉じ、投稿編集ページでSet featured image
、右側のサイドバーのリンクをクリックします。
5)jQuery関数が機能しないことがわかります。
ただし、Set featured image
編集後のロードで最初にリンクをクリックした場合、この機能は機能します。この問題を再現して解決策を見つけることができますか?これを回答として投稿して申し訳ありませんが、このプラットフォームは現在、より良いオプションを提供していません。
編集:誰かがこれについてトスコに知らせてください。彼の回答にコメントを追加することでこれを行うことができます。十分な評判がないためコメントを書くことができません...
編集2:この問題を必死に避けたい場合は、ポップアップの「注目画像を設定」リンクを削除し、ユーザーにサイドバーリンク(3.5より前のWPバージョンなど)の使用を強制することができます。WP 3.5で導入されたこのフィルターを使用します。
add_filter( 'media_view_strings', 'cor_media_view_strings' );
/**
* @see wp-includes|media.php
*/
function cor_media_view_strings( $strings ) {
unset( $strings['setFeaturedImageTitle'] );
return $strings;
}
私が言ったように、これはメインコード用のソリューションが投稿されるまでは必死の修正です。
私がこれらのソリューションのほとんどについて気に入らなかった主なことは、多くの画面で点滅していることであり、「注目の画像」をクリックすると、すべての画像の表示に戻ります。いくつかの検索の後、これらの問題を解決するように見える恒久的な解決策を見つけたと思います(ÜnsalKorkmazに感謝)。コード:
add_action( 'admin_footer-post-new.php', 'media_library_filter' );
add_action( 'admin_footer-post.php', 'media_library_filter' );
function media_library_filter() {
?>
<script type="text/javascript">
jQuery(document).on("DOMNodeInserted", function(){
jQuery('select.attachment-filters [value="uploaded"]').attr( 'selected', true ).parent().trigger('change');
});
</script>
<?php
}
点滅しないことを意味するビューを変更しようとしても、「この投稿にアップロード」のみを表示するようにメディアライブラリを永続的に設定します。
selectboxを完全に削除するためにこのコードを追加しました:
add_action( 'admin_head', 'hide_select_ddl' );
function hide_select_ddl()
{
?>
<style type="text/css">
div.media-menu a.media-menu-item:nth-child(3) {display:none!important;}
.media-frame-content .attachment-filters:first-child {
display:none;
}
</style>
<?php
}
wordpressの新しいバージョンは、メディアアップローダーに異なるアプローチ(高度なBackbonejs)を使用します。WordPressの新しいバージョンで動作するため、このプラグインのコードを確認してください。