WordPress.org

Ready to get started?Download WordPress

Forums

Media Library Assistant
Category template for Media Library Assistant with pagination (3 posts)

  1. Jonas Lundman
    Member
    Posted 12 months ago #

    Hi,
    Thanks. After a loooong night I came up with this template. I wanna the View link in the media table to work for Att. Tag and att. Category. I would like some people to comment or take a look if there is a better solution? = better way to query ... Im posting the att Category template only.

    This template creates a custom loop - for now just with the_title(), insert a MBA Gallery shortcode, and a content of itmes report.

    Everything with a pagination function included. You can use your own, but beware, the param "page" and "paged" are mixed up in many theme pag functions.

    Custom tax seems buggy with slugs and /page/2/ so the pagination calls ?page=2 instead. Thats why I created a own pagination function just for this taxanomy so I can keep the original Twentywvelve until WP fixes this.

    The file : taxonomy-attachment_tag.php
    The template (grabbed from my custom work right now):

    <?php
      /**
       * The template for displaying Custom taxonomy.
       * Learn more: http://codex.wordpress.org/Template_Hierarchy
       *
       * @package WordPress
       * @subpackage Media Library Assistant plugin
       * @revised 2013-07-12, Jonas Lundman
       * @since 1.4
       */
    
      get_header(); ?>
      <?php
    
    	global $wp_query;
    	$term = $wp_query->query_vars['term'];
    
    	// Useful stuff :
    	//echo var_export($wp_query->queried_object_id, true) . '<br />';
    	//echo var_export($wp_query->query_vars['taxonomy'], true) . '';
    	//echo '<pre>';
    	//echo var_export(get_queried_object(), true) . '';
    	//echo '</pre>';
    
    	$obj = get_queried_object();
    	$paged = (get_query_var('page')) ? get_query_var('page') : 1;
    	$ppage = 12;
    	$columns = $ppage/2;
    	$orderby = 'ID';
    
    	$args = array(
    		'post_type' => 'attachment',
    		'post_status' => 'all',
    		'numberposts' => -1,
    		'posts_per_page' => $ppage,
    		'paged' => $paged,
    		'orderby' => $orderby,
    		'order' => 'DESC',
    		'tax_query' => array(
    			array(
    				'taxonomy' => 'attachment_category',
    				'field' => 'slug',
    				'terms' => array($term)
    			)
    		)
    	);
    	$query = new WP_Query($args);
    	$taxonomy_pagination = $query->max_num_pages;
    	// Counter :
    	$counted = $query->post_count;
    	if($counted == $ppage) $counted = $taxonomy_pagination * $ppage;
    	if($currpage == $taxonomy_pagination && $taxonomy_pagination > 1) $counted = $taxonomy_pagination * $ppage;
    
    	$counted_txt = sprintf( __('More then %s items found', 'UA Network'), $counted );
    	if($counted < $ppage) $counted_txt = $counted.' '.__('items found', 'UA Network');
    	if($counted == 1) $counted_txt = sprintf( __('Only %s item found', 'UA Network'), $counted );
    
    	// Don forget to Place the ua_cat_nav() in functions.php
    
    ?>
    <?php if ($query->have_posts()) : ?>
    	<h1><?php echo __('Media category archive for', 'UA Network').' : '.$obj->name; ?></h1>
    	<h5>Uploaded content at YOUR BLOGNAME <span>|</span> <?php echo $counted_txt; ?></h5>
    	<div id='content'>
    		<?php if($obj->description) echo '<p>'.$obj->description.'</p>'; ?>
    		<?php echo do_shortcode("[mla_gallery order='DESC' orderby=".$orderby." columns=".$columns." link='file' posts_per_archive_page=".$ppage." paged=".$paged." attachment_category='".$term."']"); ?>
    		<?php ua_cat_nav( 'nav-above' ); ?>
    		<?php while ( $query->have_posts() ) : $query->the_post(); ?>
    			<?php
    				// We are in the loop
    				echo '<h3>'.get_the_title().'</h3>'; 
    
    			?>
    		<?php endwhile; ?>
    		<?php ua_cat_nav( 'nav-below' ); ?>
    		<?php wp_reset_postdata(); ?>
    	</div><!-- END UA-CONTENT -->
    
      <?php else : ?>
    	<?php get_template_part( 'content', 'none' ); ?>
      <?php endif; ?>
    
      <?php get_footer(); ?>

    The pagination (in functions.php)

    function ua_cat_nav($where) {
    	echo '<div class="pagination '.$where.'">';
    	ua_taxonomy_pagination();
    	echo '</div>';
      }
    
      function ua_taxonomy_pagination($pages = '', $range = 3){
    	$showitems = ($range * 2) + 1;  
    
    	global $paged;
    	global $taxonomy_pagination;
    	if(isset($taxonomy_pagination)) $pages = $taxonomy_pagination;
    	if(empty($paged)) $paged = 1;
    	if($pages == ''){
    		// In case using this for other wp stuff
    		global $wp_query;
    		$pages = $wp_query->max_num_pages;
    		if(!$pages) $pages = 1;
    	}
    
    	if(isset($taxonomy_pagination)){
    
    	$uri = "http://".$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"];
    	$uri = str_replace('?'.$_SERVER['QUERY_STRING'], '', $uri);
    	$p = '?page=';
    	if(1 != $pages){
    		if(($paged - 1) == 1) $back = '';
    			else $back = $p.($paged - 1);
    		if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<a class='prev page-numbers' href='".$uri."'>&laquo;</a>\n";
    		for ($i=1; $i <= $pages; $i++){
    			if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems )){
    				if($i == 1) $prev = '';
    					else $prev = $p.$i;
    				echo ($paged == $i) ? "<span class='page-numbers current'>".$i."</span>\n":"<a href='".$uri.$prev."' class='page-numbers' >".$i."</a>\n";
    			}
    		}
    		if ($paged < $pages-1 &&  $paged+$range-1 < $pages && $showitems < $pages) echo "<a class='next page-numbers' href='".$uri.$p.$pages."'>&raquo;</a>\n";
    
    	}
    
    	} // END IF ISSET
      }


    Note: This is just pasted from my current work so I hope all variables are complete, but the prupose is to share a hint of how to ...


    Some suggestions for better perfomance or issues?

    http://wordpress.org/extend/plugins/media-library-assistant/

  2. Jonas Lundman
    Member
    Posted 12 months ago #

    Note, If your theme doesnt find your new template, (like err 404), go to settings and just re-save the permalink options page. That should do the trick in many similar cases.

  3. David Lingren
    Member
    Plugin Author

    Posted 11 months ago #

    The "Pagination Revisited" topic now includes one complete solution for a paginated [mla_gallery] displaying the attachments having a particular term for a given taxonomy. The new MLA version 1.42 now handles much of the work you've done in the above PHP code.

    Thank you for raising this issue, providing a solution and helping to inspire the features I've added to the plugin!

Reply

You must log in to post.

About this Plugin

About this Topic