1

これは恐ろしい、壊滅的な、時間の盗み(2週間)の恐ろしい恐ろしい問題でした。

それは書き直し、カスタム投稿の使用かもしれませんが、多くを取り除いた後(そして私のテーマのいくつかの機能を減らした後)、私は私の問題をこれに減らしました:

paginate_links()このようなリンクを出している:

?s=cute&post_type=image&paged=2

ブラウザバーの変数をpage=2に変更したとき(「d」を削除)。

?s=cute&post_type=image&page=2 

正しく動作します。

だから私の質問はこれに還元されました:「ページ」変数を適切に出力するためにその関数を取得する必要がある場合、それはどのように行われますか?

pagedpaged両方ともWordPressで使用されます。逆に、pagedそれがより良い実践である場合、どうすれば認識されますか?

私が知っている限り、これは私のテーマにあるより深い問題を示していますが、私の人生では、他にどのようにうまくいかないのかわかりません!

編集:

これが私が使用している私のコードです:

if ( get_query_var('paged') )

        $paged = get_query_var('paged');

    elseif ( get_query_var('page') )

        $paged = get_query_var('page');

    else
        $paged = 1;     

    $big = 999999999; // need an unlikely integer

    $stuff_to_echo =  paginate_links( array(
        'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
        'format' => '?page=%#%',
        'current' => max( 1, $paged ),
        'total' => $wp_query->max_num_pages,
        'type' => 'array'
    ) );

編集2-上記が適切である場合、問題が発生している可能性のある別の可能性のある領域があります。カスタム投稿タイプの作成と書き換えルールを投稿します-

//image custom post type

add_action( 'init', 'symbiostock_image_manager_register' );

function symbiostock_image_manager_register( )
{
    //creating custom post type for image

    $labels = array(
         'name' => 'Symbiostock Images',
        'singular_name' => 'Image',
        'add_new' => 'New Image',
        'add_new_item' => 'Add New Image',
        'edit_item' => 'Edit Image',
        'new_item' => 'New Image',
        'all_items' => 'All Images',
        'view_item' => 'View Image',
        'search_items' => 'Search Images',
        'not_found' => 'No image found',
        'not_found_in_trash' => 'No images found in Trash',
        'parent_item_colon' => '',
        'menu_name' => 'RF Images' 
    );

    $args = array(

         'labels' => $labels,
        'singular_label' => __( 'Image' ),
        'description' => 'Image Listings',
        'menu_position' => 100,
        'menu_icon' => symbiostock_IMGDIR . '/symbiostock_icon2.png',
        'public' => true,
        'publicly_queryable' => true,
        'show_ui' => true,
        'capability_type' => 'post',
        'hierarchical' => true,
        'has_archive' => true,
        'exclude_from_search' => false,
        'supports' => array(
             'title',
            'editor',
            'thumbnail' 
        ),
        'rewrite' => array(
             'slug' => 'image',
            'with_front' => false 
        ) 

    );


    register_post_type( 'image', $args );

    register_taxonomy( 'image-type', array(
         'image' 
    ), array(
         'hierarchical' => true,
        'label' => 'Image Categories',
        'singular_label' => 'Image Type',
        'rewrite' => true,
        'exclude_from_search' =>false,
        'public' => true, 
        'slug' => 'image-type' 
    ) );

    register_taxonomy( 'image-tags', array(
         'image' 
    ), array(
         'hierarchical' => false,
         'rewrite' => true,
         'query_var' => true,
        'singular_label' => 'Image Keyword',

        'hierarchical'            => false,
        'labels'                  => $labels,
        'show_ui'                 => true,
        'show_admin_column'       => true,
        'update_count_callback'   => '_update_post_term_count',


        'slug' => 'image-tag',               
        'labels' => array(
            'name' => _x( 'Image Keywords', 'taxonomy general name' ),
            'singular_name' => _x( 'Keywords', 'taxonomy singular name' ),
            'search_items' =>  __( 'Search Images' ),
            'all_items' => __( 'All Image Keywords' ),
            'edit_item' => __( 'Edit Image Keyword' ),
            'update_item' => __( 'Update Image Keyword' ),
            'add_new_item' => __( 'Add New Image Keyword' ),
            'new_item_name' => __( 'New Keyword Name' ),
            'menu_name' => __( 'Image Keywords' ),
            ),
        'rewrite' => array(
            'slug' => 'search-images', // This controls the base slug that will display before each term
            'with_front' => false, 
            'hierarchical' => false 
        ),
    ) );

}

add_action( 'admin_init', 'symbiostock_image_directory' );

function symbiostock_image_directory( )
{
    add_meta_box( 'symbiostock-image-meta', 'Symbiostock Image Info', 'symbiostock_image_manager_meta_options', 'image', 'normal', 'high' );

}

そして、これがさらに下の書き換えルールです-

add_action( 'init', 'symbiostock_rewrite' );

function symbiostock_rewrite( )
{   

    global $wp_rewrite;
    $wp_rewrite->add_permastruct('typename','typename/%year%%postname%/' , true , 1);
    add_rewrite_rule('typename/([0-9]{4})/(.+)/?$','index.php?typename=$matches[2]', 'top');
    $wp_rewrite->flush_rules();

}
4

3 に答える 3

0

これは最も洗練されたソリューションではないかもしれませんが、この場合は適切です。

誰かがこの投稿タイプを検索した場合に備えて、分類ページへのリダイレクトを設定するだけです。

add_action( 'parse_query', 'image_search_redirect' );

function image_search_redirect( $query ) {
    if ( ( is_search() && get_query_var( 'post_type' ) == 'image' ) ) {

        wp_redirect(home_url("?image-tags=") . urlencode(get_query_var('s')));

        exit(); 
    }
}

これは、創造的な回避策ほどの解決策ではありません。"paged=" 変数で 404 not found が発生する理由はありません。将来の人がより良い解決策を知っているなら、私はそれを知りたいです!

于 2013-03-18T18:50:41.493 に答える
0

paginate_links() の引数の下で、フォーマットが適切に設定されていることを確認します。「paged」は通常、ユーザーがいる「現在のページ」を取得するために使用されます (参照: https://codex.wordpress.org/Pagination#Adding_the_.22paged.22_parameter_to_a_query )

'format' => '?page=%#%'

'?paged=%#%' に設定しているようです

ここに完全な例があります

global $wp_query;
$args = array(
    'format'    => '?page=%#%',
    'current'   => max( 1, get_query_var('paged') ),
    'total'     => $wp_query->max_num_pages
);
paginate_links($args);
于 2013-03-17T06:21:02.143 に答える