Чи вставляє медіа в публікацію, чи є спосіб змінити перегляд медіа-бібліотеки за замовчуванням з "Усі медіа-елементи" на "Завантажено в цю публікацію"?
Є ще одна тема, з якої було витягнуто це запитання: Як керувати відносинами вкладень
Чи вставляє медіа в публікацію, чи є спосіб змінити перегляд медіа-бібліотеки за замовчуванням з "Усі медіа-елементи" на "Завантажено в цю публікацію"?
Є ще одна тема, з якої було витягнуто це запитання: Як керувати відносинами вкладень
Відповіді:
У моїй попередній відповіді було дві незначні помилки:
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 вище, що він перемикає поле вибору, щоб викликати зміни після завантаження сторінки та після того, як вона вже почала завантажувати ВСІ МЕДІАЛЬНІ ТЕМИ. Для мого клієнта на повільному Т1 це заблокувало речі, коли він завантажував ВСІ МЕДІАЛЬНІ ВРЕМЯ та ВЗАЄМОДІ НА ЦІ ЕЛЕМЕНТИ пошти разом.
Я мав допомогу від великого 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);
}
});
});
Файл: function.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-файл і назвав його у function.php за допомогою admin_enqueue_scripts. Дивіться GIST вище для PHP та JS.
Діє блискуче. Сподіваємось, прекрасні люди з Wordpress виправлять це в майбутньому оновлення, але поки що у Sewpafly є найкраще рішення, яке я знайшов. Ще раз дякую приятелю.
Слід зазначити, що я щойно виявив, що глядач за замовчуванням знімає зображення середнього розміру, які я відключив (встановлено на 0,0), оскільки я не використовував та запобігав набряку. Якщо середній розмір недоступний, Wordpress завантажує зображення ПОВНОГО розміру. З тих пір я ввімкнув середній розмір.
@toscho Ах, я знайшов помилку у вашому коді. Будь ласка, голі зі мною. Виконайте наступне, щоб повторити проблему:
1) Відкрити проект повідомлення.
2) Натисніть на Add Media
кнопку. Дочекайтеся завантаження функції jQuery.
3) Ліворуч натисніть на Set Featured Image
посилання.
4) Тепер закрийте спливаюче вікно Медіа та на сторінці редагування публікацій натисніть на Set featured image
посилання на правій бічній панелі.
5) Ви побачите, що функція jQuery не працюватиме.
Однак якби ви спочатку натиснули на Set featured image
посилання на завантаження після редагування, функція буде працювати. Чи можете ви повторити це питання і, можливо, знайти рішення? Вибачте за те, що опублікував це як відповідь, але ця платформа зараз не пропонує мені кращого варіанту.
EDIT: Може хто - то будь ласка , дайте toscho знати про це. Це можна зробити, додавши коментар до його відповіді, який, на мою думку, повинен дати йому повідомлення. Я не можу писати коментарі, оскільки мені не вистачає репутації ...
EDIT 2 : Якщо ви хочете відчайдушно уникнути цієї проблеми, ви можете видалити посилання "Встановити обране зображення" у спливаючому віці та змусити користувача використовувати посилання на бічній панелі (як версії WP до 3.5). Використовуйте цей фільтр, який був введений у 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;
}
Як я вже сказав, це відчайдушне виправлення, поки не з'явиться рішення для основного коду.
Головне, що мені не сподобалось у більшості цих рішень, це те, що воно блимало на багатьох екранах, і якщо ви натиснули Featured Image, воно повернеться до показу всіх зображень. Після деяких пошуків я думаю, що знайшов постійне рішення (завдяки Ünsal Korkmaz ), який, схоже, вирішує ці проблеми. Кодекс:
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
}
яка постійно встановлює медіатеку лише показувати "Завантажено до цієї публікації", навіть якщо ви спробуєте змінити вигляд, що означає відсутність моргання.
Я додав цей код, щоб супроводжувати його, щоб повністю видалити поле вибору:
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.