0

カスタムクエリを使用して国別に投稿を検索するサイトがあります。

検索結果は正常に返されますが、下部のページ番号は、検索結果の投稿の総数ではなく、サイトの投稿の総数を反映しています。

これを管理するプラグインは、カスタムクエリの代わりに、グローバル$wp_queryを使用して投稿数を決定します。デフォルトでは、次のように機能します。

function wp_page_numbers($start = "", $end = "")
{
    global $wp_query;
    global $max_page;
    global $paged;
    if ( !$max_page ) { $max_page = $wp_query->max_num_pages; }
    if ( !$paged ) { $paged = 1; }

    $settings = get_option('wp_page_numbers_array');
    $page_of_page = $settings["page_of_page"];
    $page_of_page_text = $settings["page_of_page_text"];
    $page_of_of = $settings["page_of_of"];

    $next_prev_text = $settings["next_prev_text"];
    $show_start_end_numbers = $settings["show_start_end_numbers"];
    $show_page_numbers = $settings["show_page_numbers"];

    $limit_pages = $settings["limit_pages"];
    $nextpage = $settings["nextpage"];
    $prevpage = $settings["prevpage"];
    $startspace = $settings["startspace"];
    $endspace = $settings["endspace"];

    if( $nextpage == "" ) { $nextpage = ">"; }
    if( $prevpage == "" ) { $prevpage = "<"; }
    if( $startspace == "" ) { $startspace = "..."; }
    if( $endspace == "" ) { $endspace = "..."; }

    if($limit_pages == "") { $limit_pages = "10"; }
    elseif ( $limit_pages == "0" ) { $limit_pages = $max_page; }

私はそれをこれに変更しようとしました:

if ($gallery_query){ $page_query=$gallery_query; }else {$page_query=$wp_query;}
    global $max_page;
    global $paged;
    if ( !$max_page ) { $max_page = $page_query->max_num_pages; }
    if ( !$paged ) { $paged = 1; }

しかし、それはページを返しません。

理想的には、$wp_queryの値を$gallery_queryの値に置き換える必要がありますが、その方法がわかりません。明らかなこと$wp_query = $gallery_queryは機能しません。

助言がありますか?

ありがとう!

ty

4

2 に答える 2

0

これについてTheDeadMedicに感謝します:

function wp_page_numbers_custom( $wp_query, $start = '', $end = '' )
{
    $_backup = array(
        'wp_query' => @ $GLOBALS['wp_query'],
        'max_page' => @ $GLOBALS['max_page'],
           'paged' => @ $GLOBALS['paged'],  
    );

    $GLOBALS['wp_query'] = $wp_query;
    $GLOBALS['max_page'] = $wp_query->max_num_pages;
       $GLOBALS['paged'] = max( $wp_query->get( 'paged' ), 1 );

    wp_page_numbers( $start, $end );

    foreach ( $_backup as $var => $val )
        $GLOBALS[ $var ] = $val;
}

// Example usage: wp_page_numbers_custom( $gallery_query );

それは私の問題を完全に解決しました!

于 2012-07-04T13:22:53.343 に答える
0

WPページ番号プラグインで同じ問題が発生しました。この問題のもう1つの解決策は、検索結果の$ wp_queryを変更してから、元に戻す必要がある場合はwp_reset_queryを実行することです。

于 2012-07-12T19:57:12.960 に答える