Vượt qua và truy xuất các vars truy vấn trong wordpress


16

Tôi có hai trang tác giả, một trang hiển thị khoảng 5 bài viết. Sau đó, tôi đang cố gắng thiết lập một trang khác sẽ là tất cả các bài đăng của họ. Tôi đã tạo một mẫu có tên moreauthorposts.php và tôi đang cố gắng chuyển biến tác giả vào trang này. Vấn đề là nếu tôi vượt qua domain.com/more-master-posts?master=johndoe thì nó sẽ bị xóa. Làm thế nào tôi có thể lấy giá trị này? Điều này thậm chí có thể trong wordpress? Tôi biết WP Rewrite đang xâm nhập cấu trúc URL của tôi bằng cách nào đó tôi chỉ không chắc chắn.

Tôi đã thử:

get_query_var('author')

và đã thử đọc nó nhưng không gặp may mắn:

http://codex.wordpress.org/Query_Overview

Gợi ý?

Cảm ơn.

Câu trả lời:


21

Tôi gần như chắc chắn rằng nó authorđược tích hợp sẵn, vì vậy hãy sử dụng một cái gì đó như author_more. Bạn sẽ cần thêm var đó vào query_varstrước. Thí dụ:

// add `author_more` to query vars
add_filter( 'init', 'add_author_more_query_var' );
function add_author_more_query_var()
{
    global $wp;
    $wp->add_query_var( 'author_more' );
}

Sau đó, trên more-author-posts.phpmẫu của bạn gọi nó như thế này:

if ( get_query_var( 'author_more' ) )
{
    // do your stuff
}

Cập nhật

Điều này hoạt động trong ví dụ / trường hợp sử dụng URl sau đây:

http://example.com/index.php?author_more=value

Nhưng nếu bạn muốn sử dụng điều này như URl ưa thích, bạn cần thêm quy tắc viết lại:

add_action('init','add_author_more_rewrite_rule');
function add_author_more_rewrite_rule()
{
    add_rewrite_rule(
        'more-author-posts/(\d*)$',
        'index.php?author_more=$matches[1]',
        'top'
    );
}

Bây giờ bạn có thể sử dụng nó như thế này

http://example.com/more-author-posts/value

Ok vì vậy tôi đã thêm các vars truy vấn vào hàm.php. Sau đó thêm mã khác vào bài viết nhiều tác giả của tôi. Điều gì sẽ là cấu trúc URL chính xác để vượt qua những điều này? Tôi biết rằng phân trang sử dụng định dạng của / page / 2 nhưng thực hiện nhiều bài viết của tác giả / more_ Tác giả / johndoe dường như không hoạt động?
codeisforeva

tôi đã cập nhật câu trả lời
BaiNET

Vấn đề là tôi không cố gắng chuyển các vars sang index.php. Tôi đang cố gắng chuyển chúng vào mẫu tùy chỉnh mà tôi đã phát triển vì nó trông hoàn toàn khác với chỉ mục. Vì vậy, nếu tôi chuyển các giá trị cho moreauthor.php? Author_more = johndoe .. điều đó dường như không hoạt động. Làm gì sai ở đây?
codeisforeva

@ בנ @codeisforeva Bạn không nên gọi trực tiếp tệp mẫu, phải không? index.php chỉ là tập tin gốc của wordpress, mọi quy tắc viết lại sẽ đi qua đó.
Goldenapples

1
@codeisforeva: index.phpQuy tắc viết lại là index.phptrong thư mục gốc của WordPress, không phải index.phptrong tệp mẫu của bạn. Bạn vẫn có thể chọn mẫu nào sẽ được hiển thị, bằng cách nối vào template_includebộ lọc.
Jan Fabry
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.