การส่งและรับ vars แบบสอบถามใน wordpress


16

ฉันมีผู้เขียนสองหน้าหน้าหนึ่งแสดงประมาณ 5 โพสต์ จากนั้นฉันพยายามตั้งค่าหน้าอื่นที่จะเป็นโพสต์ทั้งหมด ฉันได้สร้างแม่แบบชื่อ moreauthorposts.php และฉันพยายามส่งตัวแปรผู้เขียนมายังหน้านี้ ปัญหาคือถ้าฉันผ่าน domain.com/more-author-posts?author=johndoe จะถูกถอดออก ฉันจะรับค่านี้ได้อย่างไร เป็นไปได้ใน wordpress หรือไม่ ฉันรู้ว่า WP Rewrite กำลังสร้างโครงสร้าง URL ของตัวเองฉันไม่แน่ใจ

ฉันได้พยายาม:

get_query_var('author')

และพยายามอ่านสิ่งนี้ แต่ไม่มีโชค:

http://codex.wordpress.org/Query_Overview

ข้อเสนอแนะ?

ขอบคุณ

คำตอบ:


21

ฉันเกือบแน่ใจว่าถูกสร้างขึ้นในดังนั้นการใช้งานบางอย่างเช่นauthor author_moreคุณจะต้องเพิ่ม var นั้นquery_varsก่อน ตัวอย่าง:

// 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' );
}

จากนั้นบนmore-author-posts.phpเทมเพลตของคุณเรียกมันว่า:

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

ปรับปรุง

ใช้งานได้ในตัวอย่าง / กรณีใช้ URl ต่อไปนี้:

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

แต่ถ้าคุณต้องการใช้สิ่งนี้เป็นแฟนซี URl คุณต้องเพิ่มกฎการเขียนซ้ำ:

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'
    );
}

ตอนนี้คุณสามารถใช้มันได้เช่นนี้

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

ตกลงดังนั้นฉันเพิ่ม vars แบบสอบถามลงใน functions.php จากนั้นเพิ่มรหัสอื่น ๆ ลงในโพสต์ของผู้แต่งเพิ่มเติม โครงสร้าง URL ที่ถูกต้องจะผ่านสิ่งเหล่านี้ได้อย่างไร ฉันรู้ว่าเพจใช้รูปแบบของ / หน้า / 2 แต่การทำโพสต์ผู้แต่ง / more_author / johndoe มากกว่านั้นดูเหมือนจะไม่ทำงานเหรอ
codeisforeva

ฉันอัปเดตคำตอบ
Bainternet

ปัญหาคือฉันไม่พยายามส่ง vars ไปที่ index.php ฉันกำลังพยายามส่งต่อไปยังเทมเพลตที่กำหนดเองที่ฉันพัฒนาเพราะมันดูแตกต่างจากดัชนีอย่างสิ้นเชิง ดังนั้นถ้าฉันส่งค่าไปที่ moreauthor.php? author_more = johndoe .. ที่ดูเหมือนจะไม่ทำงาน ทำอะไรผิดพลาดที่นี่?
codeisforeva

@ בנייתאתריםดูเหมือนคำตอบที่ชัดเจนมาก! @codeisforeva คุณไม่ควรเรียกไฟล์แม่แบบโดยตรงใช่ไหม? index.php เป็นเพียงไฟล์รูทของ wordpress กฎการเขียนใหม่ทุกครั้งควรผ่านไปที่นั่น
goldenapples

1
@codeisforeva: index.phpกฎการเขียนใหม่นั้นอยู่index.phpในไดเรกทอรีรากของ WordPress ไม่ใช่index.phpในไฟล์แม่แบบของคุณ คุณยังคงสามารถเลือกเทมเพลตที่ควรแสดงได้โดยเชื่อมต่อกับtemplate_includeตัวกรอง
Jan Fabry
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.