Domyślna liczba postów WP i paginacja WP są nieprawidłowe w przypadku postów typu niestandardowego
W zasadzie mam dwie kwestie:
-
Liczba postów (wszystkie, opublikowane, wersje robocze itp.) niestandardowych postów typu post na stronie listy jest niepoprawna, co naprawiłem za pomocą niestandardowych kodów w plikufunctions.php poniżej:
// Fix post counts function fix_post_counts($views) { global $current_user, $wp_query; unset($views['mine']); $types = array( array( 'status' => NULL ), array( 'status' => 'publish' ), array( 'status' => 'future' ), array( 'status' => 'draft' ), array( 'status' => 'pending' ), array( 'status' => 'trash' ) ); foreach( $types as $type ) { $query = array( 'author' => $current_user->ID, 'post_type' => 'my_post_type', 'post_status' => $type['status'] ); $result = new WP_Query($query); if( $type['status'] == NULL ): $class = ($wp_query->query_vars['post_status'] == NULL) ? ' class="current"' : ''; $views['all'] = sprintf(__('<a href="%s"'. $class .'>Total <span class="count">(%d)</span></a>', 'all'), admin_url('edit.php?post_type=my_post_type'), $result->found_posts); elseif( $type['status'] == 'publish' ): $class = ($wp_query->query_vars['post_status'] == 'publish') ? ' class="current"' : ''; $views['publish'] = sprintf(__('<a href="%s"'. $class .'>Published <span class="count">(%d)</span></a>', 'publish'), admin_url('edit.php? post_status=publish&post_type=my_post_type'), $result->found_posts); elseif( $type['status'] == 'future' ): $class = ($wp_query->query_vars['post_status'] == 'future') ? ' class="current"' : ''; $views['future'] = sprintf(__('<a href="%s"'. $class .'>Scheduled <span class="count">(%d)</span></a>', 'publish'), admin_url('edit.php? post_status=future&post_type=my_post_type'), $result->found_posts); elseif( $type['status'] == 'draft' ): $class = ($wp_query->query_vars['post_status'] == 'draft') ? ' class="current"' : ''; $views['draft'] = sprintf(__('<a href="%s"'. $class .'>Drafts'. ((sizeof($result->posts) > 1) ? "s" : "") .' <span class="count">(%d)</span></a>', 'draft'), admin_url('edit.php?post_status=draft&post_type=my_post_type'), $result->found_posts); /* elseif( $type['status'] == 'pending' ): $class = ($wp_query->query_vars['post_status'] == 'pending') ? ' class="current"' : ''; $views['pending'] = sprintf(__('<a href="%s"'. $class .'>Pendiente <span class="count">(%d)</span></a>', 'pending'), admin_url('edit.php?post_status=pending&post_type=my_post_type'), $result->found_posts); */ elseif( $type['status'] == 'trash' ): $class = ($wp_query->query_vars['post_status'] == 'trash') ? ' class="current"' : ''; $views['trash'] = sprintf(__('<a href="%s"'. $class .'>Trash <span class="count">(%d)</span></a>', 'trash'), admin_url('edit.php?post_status=trash&post_type=my_post_type'), $result->found_posts); endif; } return $views; }
Oto link referencyjny:
- Paginacja powyższych postów typu post na stronie listy również nie jest poprawna
Mam problem z paginacją listy niestandardowych postów typu post; niestandardowy typ postu jest tworzony przez motyw WordPress. Paginacja nie pokazuje poprawnie numerów paginacji.
Na przykład na liście znajduje się 200 postów o niestandardowym typie postów, a domyślnie WP wyświetla tylko 10 postów, pokazuje 20 stron dostępnych do nawigacji. Ale jeśli zmienię liczbę postów na stronę za pomocą tego zapytania:
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$data= new WP_Query(array(
'post_type'=>'my_post_type', // your post type name
'posts_per_page' => 20,
'paged' => $paged,
));
-liczba stron nawigacyjnych nadal wyświetla się 20 stron zamiast 200/20 = 10 stron, ponieważ przy powyższych kodach zmieniam liczbę postów na stronę na 20.
-I pierwszy problem wspomniany powyżej pokazuje, że posty nie liczą się poprawnie, tak jak przed naprawieniem.
Czy możesz doradzić, jak je poprawić, używając niestandardowych kodów w plikufunctions.php
Bardzo doceniam każdą pomoc.