2016-08-17 2 views
1

Ich habe eine Lösung auf SO und eine andere Website gefunden, aber mein Problem löst diese Art nicht. Bitte sagen Sie mir jemand, wo das Problem ist? Ich erhalte Paginierung aber keine benutzerdefinierten Post (Galerie Abschnitt) Inhalt, wenn ich auf der zweiten page.What klicken ich bisher versucht haben:Erstellen von Paginierung von benutzerdefinierten Beitragstyp in WordPress

benutzerdefinierte Post (Galerie) Kreation:

function jellythemes_media_gallery() { 
    $labels = array(
    'name' => __('Gallery', 'framework'), 
    'singular_name' => __('Gallery', 'framework'), 
    'add_new' => __('Add media', 'framework'), 
    'add_new_item' => __('Add media', 'framework'), 
    'edit_item' => __('Edit media', 'framework'), 
    'new_item' => __('New media', 'framework'), 
    'view_item' => __('View media', 'framework'), 
    'search_items' => __('Search media', 'framework'), 
    'not_found' => __('No media found', 'framework'), 
    'not_found_in_trash' => __('No media found in Trash', 'framework'), 
    'parent_item_colon' => '' 
); 

    $args = array(
    'labels' => $labels, 
    'public' => true, 
    'publicly_queryable' => true, 
    'show_ui' => true, 
    'query_var' => true, 
    'rewrite' => true, 
    'show_in_nav_menus' => false, 
    'capability_type' => 'post', 
    'hierarchical' => false, 
    'exclude_from_search' => true, 
    'menu_position' => 5, 
    'supports' => array('title') 
); 
    register_post_type('media',$args); 
} 

und query:

function jellythemes_gallery($atts, $content=null) { 
    extract(shortcode_atts(array(
     'limit' => -1 
     ), $atts)); 
    global $post; 
    $back=$post; //Backup post data 
    $return = '<div id="portfolio"> 
       <div class="section portfoliocontent"> 
        <section id="i-portfolio" class="clear">'; 

    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;  
    $media = new WP_Query(array('post_type'=>'media', 'posts_per_page' => esc_attr($limit),'paged' => $paged,)); 
    if($media->have_posts()) : 
    while ($media->have_posts()) : $media->the_post(); 
     $image = get_post_meta($post->ID, '_jellythemes_media_photo', true); 
     $video = get_post_meta($post->ID, '_jellythemes_media_video', true); 
     $img = wp_get_attachment_image_src($image, 'media_thumb'); 
     $return .= '<div class="ch-grid element"> 
         <img class="ch-item" src="' . $img[0] .'" alt="' . get_the_title() . '" />'; 
     if (empty($video)) { 
      $return .= '<a class="fancybox img-lightbox" rel="" href="' . $img[0] .'">'; 
     } else { 
      $return .= '<a class="fancybox-media" rel="" href="' . $video.'">'; 
     } 
     $return .= ' <div> 
           <span class="p-category ' . (empty($video) ? 'photo' : 'video') . '"></span> 
          </div> 
         </a> 
        </div>'; 

    endwhile; 
    $total_pages = $media->max_num_pages; 
    if ($total_pages > 1){ 

     $current_page = max(1, get_query_var('paged')); 

     echo paginate_links(array(
      'base' => get_pagenum_link(1) . '%_%', 
      'format' => '/page/%#%', 
      'current' => $current_page, 
      'total' => $total_pages, 
      'prev_text' => __('« prev'), 
      'next_text' => __('next »'), 
     )); 
    } 
    else {echo "<h3>404 Error</h3>";} 
    endif; 
    wp_reset_postdata(); 
    $post=$back; //restore post object 
    $return .= '</section> 
      </div> 
     </div>'; 
    return $return; 
} 
add_shortcode('jellythemes_gallery', 'jellythemes_gallery'); 

Bitte könnte mir jemand sagen, warum in zweiten Paginierung ich Inhalt von benutzerdefinierten Beitrag (Galerie) nicht erhalten, es ist das gleiche wie Seite eins?

Antwort

0

Sie können wp-paginate Plugin verwenden. https://wordpress.org/plugins/wp-paginate/

Oder Sie können auch unten genannten Code für die Paginierung von benutzerdefinierten Beitragstyp verwenden.

<?php 
    $postsperpage = get_option('posts_per_page'); 
    if($media->max_num_pages > $postsperpage){ 
    ?> 
    <nav role="navigation"> 
     <ul class="cd-pagination no-space"> 
      <li class="button"><?php echo get_previous_posts_link(''); ?></li> 
      <?php 
      for($count=1; $count<=$media->max_num_pages; $count++){ 
       if($count == $paged){ 
        $pagiClass="current"; 
       }else{ 
        $pagiClass=""; 
       } 
       echo '<li><a class="'.$pagiClass.'" href="'.get_permalink($current_post_id).'page/'.$count.'">'.$count.'</a></li>'; 
      } 
      ?> 
      <li class="button"><?php echo get_next_posts_link('', $media->max_num_pages); ?></li> 
     </ul> 
    </nav> 
    <?php 
    } 
    ?> 
Verwandte Themen