Bonjour à tous et merci d'avance pour votre aide! J'ai un plugin et j'essayais de faire de la pagination pour une requête personnalisée. Tout semble bien fonctionner, mais quand je clique sur la page 2 (ou que ce ne soit pas "1"), wordpress dit
Vous ne disposez pas des autorisations suffisantes pour accéder à cette page
Je crois que cette erreur est due au fait que, avec cette méthode de pagination que j'essayais, l'URL est la suivante:
/wp-admin/admin.php?page=lismovim-withdraw-slug/page/2/
Donc, je suppose que WP ne reconfigure pas cette adresse. Des idées? Peut-être un autre moyen de faire la pagination? J'ai vraiment besoin d'aide, je surfais assez longtemps sur Internet et je ne trouvais aucune solution. Voici mon code:
function listado_movimientos(){
echo '<p><strong>LISTADO DE MOVIMIENTOS APROBADOS/DECLINADOS<strong></p>';
echo '<table class="wp-list-table widefat fixed striped axdepositbycash">
<tr style="font-weight: bold;font-size: 15px">
<td>ID</td>
<td>FECHA</td>
<td>USUARIO</td>
<td>NOMBRE</td>
<td>CANTIDAD</td>
<td>Nº CUENTA</td>
<td>ESTADO</td>
</tr>';
$rows_per_page = 10;
$current = (intval(get_query_var('paged'))) ? intval(get_query_var('paged')) : 1;
global $wpdb;
$table_name = $wpdb->prefix. "withdraw";
$result2=$wpdb->get_results("select * from $table_name where status='aprobado'");
$pagination_args = array(
'base' => @add_query_arg('paged','%#%'),
'format' => '',
'total' => ceil(sizeof($result2)/$rows_per_page),
'current' => $current,
'show_all' => false,
'type' => 'plain',
);
$pagination_args['base'] = user_trailingslashit( trailingslashit( remove_query_arg('s',get_pagenum_link(1) ) ) . 'page/%#%/', 'paged');
if( !empty($wp_query->query_vars['s']) )
$pagination_args['add_args'] = array('s'=>get_query_var('s'));
echo paginate_links($pagination_args);
$start = ($current - 1) * $rows_per_page;
$end = $start + $rows_per_page;
$end = (sizeof($result2) < $end) ? sizeof($result2) : $end;
echo '<br />';
echo '<br />';
for ($i=$start;$i < $end ;++$i ) {
$r2 = $result2[$i];
echo '<tr>
<td>'.$r2->id.'</td>
<td>'.$r2->wdate.'</td>
<td> '.$r2->fname. " " . $r2->lastname.'</td>
<td>'.$r2->name.'</td>
<td>'.$r2->amt.'</td>
<td>'.$r2->acno.'</td>
<td>'.$r2->status.'</td>
</tr>';
}
echo "</table>";
}
Voici l'extrait original, où j'ai trouvé comment faire la pagination en premier lieu.
L'argument base
pour paginate_links()
devrait être:
admin_url( 'admin.php?page=lismovim-withdraw-slug&paged=%_%' )
... où %_%
est remplacé par format
, qui devrait être:
'%#%'
... qui est remplacé par le numéro de page.