Quantcast
Channel: WordPress › Support » Forum: Hacks - Recent Topics
Viewing all articles
Browse latest Browse all 8245

eclev91 on "Expanding the media library select options"

$
0
0

I'm trying to add an option to the media library select dropdown that will allow the user to view only images uploaded by a particular author - I don't want this to definitively be the case, I want the option via the select box.

Right now I've overridden AttachmentFilters.All's createFilters function to add my own filter like so:

add_action( 'admin_print_footer_scripts', 'add_author_to_filter_object', 51);

function add_author_to_filter_object() { ?>
	    <script type="text/javascript">
	    // Add custom post type filters
	    l10n = wp.media.view.l10n = typeof _wpMediaViewsL10n === 'undefined' ? {} : _wpMediaViewsL10n;
	    wp.media.view.AttachmentFilters.All.prototype.createFilters = function() {
				var filters = {};

				//new one
				filters.featuredAuthor = {
					text: 'Images Uploaded By Featured Author',
					props: {
							status:  null,
							type:    null,
							uploadedTo: null,
							orderby: 'date',
							order:   'DESC',
							featuredAuthor: true
					},
					priority: 5
				};

				_.each( wp.media.view.settings.mimeTypes || {}, function( text, key ) {
					filters[ key ] = {
						text: text,
						props: {
							status:  null,
							type:    key,
							uploadedTo: null,
							orderby: 'date',
							order:   'DESC'
						}
					};
				});

				filters.all = {
					text:  l10n.allMediaItems,
					props: {
						status:  null,
						type:    null,
						uploadedTo: null,
						orderby: 'date',
						order:   'DESC'
					},
					priority: 10
				};

				if ( wp.media.view.settings.post.id ) {
					filters.uploaded = {
						text:  l10n.uploadedToThisPost,
						props: {
							status:  null,
							type:    null,
							uploadedTo: wp.media.view.settings.post.id,
							orderby: 'menuOrder',
							order:   'ASC'
						},
						priority: 20
					};
				}

				filters.unattached = {
					text:  l10n.unattached,
					props: {
						status:     null,
						uploadedTo: 0,
						type:       null,
						orderby:    'menuOrder',
						order:      'ASC'
					},
					priority: 50
				};

				if ( wp.media.view.settings.mediaTrash &&
					this.controller.isModeActive( 'grid' ) ) {

					filters.trash = {
						text:  l10n.trash,
						props: {
							uploadedTo: null,
							status:     'trash',
							type:       null,
							orderby:    'date',
							order:      'DESC'
						},
						priority: 50
					};
				}

				this.filters = filters;
			};
	    </script>
	<?php }

Which adds the option to the select box as expected - great. Now I want to catch the ajax query and adjust its parameters accordingly:

add_filter('ajax_query_attachments_args', 'featured_author_media_filter');

public static function featured_author_media_filter($query) {
	    if($query['featuredAuthor']) {
		    $featured_author = get_field('featured_author', 2); //get from front page
		    $query['author'] = $featured_author->post_author;
		}
	    return $query;
	}

This is where things go poorly. It seems like my if statement there is never true. If I do a dump or something before it, the ajax loading of the media library fails, so I know at least my filter is being called. Is there something I'm missing? I don't feel like this whole thing is very well documented and I admittedly know next-to-nothing about Backbone.


Viewing all articles
Browse latest Browse all 8245

Trending Articles