Змінити перегляд Media Media Media за замовчуванням на 3,5?


33

Чи вставляє медіа в публікацію, чи є спосіб змінити перегляд медіа-бібліотеки за замовчуванням з "Усі медіа-елементи" на "Завантажено в цю публікацію"?

запозичений знімок екрана

Є ще одна тема, з якої було витягнуто це запитання: Як керувати відносинами вкладень


Ви спробували вимкнути всі інші плагіни, повернутись до теми за замовчуванням, а потім просто активувати цей з toscho? Можливий конфлікт JS.
кайзер

Відповіді:


22

У моїй попередній відповіді було дві незначні помилки:

  1. Я забув викликати changeподію для батьків.
  2. Я закликав функцію під час кожного дзвінка AJAX, унеможливлюючи інші вибори.

Ось фіксований код:

<?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
}

Дуже дякую, тошо! <br> Плагін-код, який ви впали тут, працює для мене зараз як шарм! (Було б добре, якщо хтось може перетворити цю "відповідь" в коментар і встановити статус для відповіді)
div

Ви єдиний, хто може поставити галочку на відповідь . Ви повинні використовувати той обліковий запис, який ви використовували для запиту. Я об’єднав обидва рахунки, ви повинні мати можливість поставити галочку зараз. :)
fuxia

3
Цей дуже елегантний код працює при натисканні на Add Mediaкнопку, але не при натисканні на Set featured image. Чи є спосіб, щоб він також працював там?
Крістін Купер

Це працює і в моїй системі для обраних зображень.
фуксія

1
У цьому можлива проблема, схоже, ви вибираєте все, що має значення = завантажено. Крім того, якщо ви хочете додати javascript для ініціалізації кожного завантажувача, wp.media.view.UploaderWindow.prototype.on('ready',function() {console.log(jQuery('.media-modal-content'))...your code here...});було б більш доречно.
NoBugs

13

Єдина проблема 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 завантажує зображення ПОВНОГО розміру. З тих пір я ввімкнув середній розмір.


надзвичайно корисно - чи можна не просто обмежити кількість зображень, які відображаються в медіатеці, деяким типом гачка?
Вроджений

Особисто мені також подобається додати цей CSS, який приховатиме спадне середовище медіа: pastebin.com/1dP6SR4g
Howdy_McGee

1
На жаль, це рішення страждає від одного головного питання. Виконайте наступне: 1. Відкрийте публікацію на екрані після редагування. 2. Клацніть посилання "Встановити образне зображення" (перед натисканням кнопки Додати медіа). 3. Код працює добре. Тепер закрийте вікно і натисніть кнопку Додати медіа. Ви побачите, що вибрано варіант "Усі медіа", але він відображає завантажені. Щоб переключитися на всі зображення, вам потрібно буде переключити на завантажені, а потім повернутися до всіх носіїв інформації. У когось є рішення цієї проблеми? Дякую за це.
Крістін Купер

4

@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;
}

Як я вже сказав, це відчайдушне виправлення, поки не з'явиться рішення для основного коду.


Я про це знаю, у мене просто немає часу продовжувати плагін.
фуксія

Я розумію, якби ви знайшли час у найближчому майбутньому, щоб продовжити його, ми всі були б вдячні.
Крістін Купер

Цю відповідь я оновив "досі" для відчайдушних. Якщо ви хочете, ви можете додати це до своєї відповіді ...
Крістін Купер

2

Головне, що мені не сподобалось у більшості цих рішень, це те, що воно блимало на багатьох екранах, і якщо ви натиснули 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
}

2

У нових версіях wordpress використовується інший підхід (розширений Backbonejs ) для завантажувача медіа; Перевірте код цього плагіна, як він працює для нових версій WordPress.


2
Було б добре, якби ви насправді ділилися кодом - не просто посиланням.
кайзер

0

Це моє рішення встановити dateFilterна поточний місяць, хоча він запускає AJAX двічі.

.on('content:render:browse', function(a, b) {
  var filter = a.toolbar.secondary.get('dateFilter');           
  if (filter.model) {
    filter.model.set(filter.filters[1].props);
  }
})
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.