Пагинация - Разбивать Сообщения На Страницы Администратора

  • Автор темы Kosaya
  • Обновлено
  • 22, Oct 2024
  • #1

Я создал плагин, который вызывает список сообщений и получает данные внешнего API. Я использую get_posts для получения списка (потому что мне нужно передать массив ссылок в запрос API)

По какой-то причине любая попытка нумерации страниц либо полностью терпит неудачу, либо загружает одни и те же сообщения. Поскольку ничего из того, что я сделал, не помогло, на этом этапе я удалил всю нумерацию страниц.

 add_action('admin_menu' , 'blgs_dashboard_snap'); 

function blgs_dashboard_snap() {

add_dashboard_page( 'Social Metrics', 'Social Metrics', 'read', 'blgs-social-metrics-snap', 'blgs_metrics_page');
}

function blgs_metrics_page() {

echo '<div class="wrap">';
echo '<div id="icon-blgs-metrics" class="icon32">';
echo '<br />';
echo '</div>';

echo '<h2>Social Metrics Dashboard</h2>';
echo '<div id="bg_social_page">';

echo '

<ul class="headers">

<li class="post_date">Publish Date</th>

<li class="post_title">Post Title</th>

<li class="social_icon social_total"><img src="'.plugins_url( '/img/twitter.png', __FILE__ ).'" title="Твиттер" alt="Твиттер"></li>

<li class="social_icon social_total"><img src="'.plugins_url( '/img/gplus.png', __FILE__ ).'" title="Гугл Плюс" alt="Гугл Плюс"></li>

<li class="social_icon social_total"><img src="'.plugins_url( '/img/stumble.png', __FILE__ ).'" title="StumbleUpon" alt="StumbleUpon"></li>

<li class="social_icon social_total"><img src="'.plugins_url( '/img/linkedin.png', __FILE__ ).'" title="LinkedIn" alt="LinkedIn"></li>

<li class="social_icon social_total"><img src="'.plugins_url( '/img/delicious.png', __FILE__ ).'" title="Вкусный" alt="Вкусный"></li>

<li class="social_icon social_total"><img src="'.plugins_url( '/img/reddit.png', __FILE__ ).'" title="Реддит" alt="Реддит"></li>

<li class="social_icon social_total"><img src="'.plugins_url( '/img/digg.png', __FILE__ ).'" title="Дигг" alt="Дигг"></li>

<li class="social_icon social_total"><img src="'.plugins_url( '/img/facebook.png', __FILE__ ).'" title="Фейсбук" alt="Фейсбук"></li>

<li class="fb_total fb_comm">Comments</li>

<li class="fb_total fb_like">Likes</li>

<li class="fb_total fb_share">Shares</li>

</ul>

';

global $post;

$args = array(

'post_type'         => 'post',

'post_status'       => 'publish',

'order'             => 'DESC',

'orderby'           => 'date',

'posts_per_page'    => 15,

);

$dash_posts = get_posts( $args );

// build out table

foreach( $dash_posts as $post ) :   setup_postdata($post);

$link   = get_permalink();

$grab   = urlencode($link);

$request    = new WP_Http;

$url        = 'http://api.sharedcount.com/?url='.$grab.'';

$response   = wp_remote_get ( $url );

if( is_wp_error( $response ) ) {

echo '<p>There was an error getting the data. Please try again later.</p>';

} else {

$output = json_decode( $response['body'] ); 

}

$title  = get_the_title();

$edit   = get_edit_post_link( $post->ID, $title );

$date   = get_the_date('m/d/y');

// get my numbers

$stumble    = $output->StumbleUpon;

$reddit     = $output->Reddit;

$delicious  = $output->Delicious;

$gplus      = $output->GooglePlusOne;

$twitter    = $output->Twitter;

$digg       = $output->Diggs;

$linkedin   = $output->LinkedIn;

// facebook sub counts

$fb_total   = $output->Facebook->total_count;

$fb_cmbox   = $output->Facebook->commentsbox_count;

$fb_click   = $output->Facebook->click_count;

$fb_comms   = $output->Facebook->comment_count;

$fb_like    = $output->Facebook->like_count;

$fb_share   = $output->Facebook->share_count;

// set even odd for some fancy

$altrows = ( ' altrow' != $altrows ) ? ' altrow' : '';

// now output the data

echo '

<ul class="numbers'.$altrows.'">

<li class="post_date">'.$date.'</li>

<li class="post_title"><a href="'.$edit.'">'.$title.'</a></li>

<li class="social_total">'.$twitter.'</li>

<li class="social_total">'.$gplus.'</li>

<li class="social_total">'.$stumble.'</li>

<li class="social_total">'.$linkedin.'</li>

<li class="social_total">'.$delicious.'</li>

<li class="social_total">'.$reddit.'</li>

<li class="social_total">'.$digg.'</li>

<li class="social_total">'.$fb_total.'</li>

<li class="fb_total fb_comm">'.$fb_comms.'</li>

<li class="fb_total fb_like">'.$fb_like.'</li>

<li class="fb_total fb_share">'.$fb_share.'</li>

</ul>

';

endforeach;

wp_reset_postdata();

echo '</div></div>';

}
 

есть какие-нибудь идеи о том, (а) как заставить его работать и (б) куда оно должно идти?

#нумерация страниц #get-posts #admin-menu

Kosaya


Рег
10 Jan, 2007

Тем
81

Постов
205

Баллов
620
  • 25, Oct 2024
  • #2

Вот что в конечном итоге решило проблему (я включу соответствующие части)

 
     $pagin = array();
for( $i = 1; $i <= $pages; $i++ ) {

$url = $_SERVER['REQUEST_URI'] . "&pagenum=$i";

$link = "<li><a href='$url'>$i</a></li>";

if ($curpage != $i) $link = str_replace( '~', '', $link );

$pagin[] = $link;
}
echo '<div id="blgs_post_loader"><ul>'. implode( '', $pagin ) .'</ul></div>';
 

обрабатывает запрос, затем

$total = wp_count_posts()->publish; $perpage = 10; $curpage = isset( $_GET['pagenum'] ) ? intval($_GET['pagenum']) : 1; global $post; $args = array( 'post_type' => 'post', 'post_status' => 'publish', 'order' => 'DESC', 'orderby' => 'date', 'posts_per_page' => $perpage, 'offset' => $perpage*($curpage-1) ); $pages = ceil($total/$perpage); $dash_posts = get_posts( $args );

позаботился о самой нумерации страниц. По какой-то причине стандартная «выгружаемая» переменная не срабатывает правильно на стороне администратора.

 

Ада49


Рег
07 Feb, 2014

Тем
64

Постов
208

Баллов
538
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно