ฉันจะตั้งชื่อหน้าแบบไดนามิกได้อย่างไร


19

เป็นไปได้ไหมที่จะเปลี่ยนชื่อหน้าด้วยรหัส?

ตัวอย่างเช่นสมมุติว่าชื่อเพจเป็น "จองคำสั่งซื้อของคุณ" แต่ฉันต้องการเปลี่ยนเป็น "สั่งซื้อหนังสือ # 123"

ฉันอยากได้ Google และดูที่นี่และไม่เห็นอะไรเลย ใครรู้จักปลั๊กอินหรือแฮ็ค

wp_title ส่งคืนชื่อหน้า แต่ไม่อนุญาตให้ตั้งชื่อหน้า: http://codex.wordpress.org/Function_Reference/wp_title


คุณค่าจะมาจากไหน? สิ่งที่มีอยู่ในหน้านั้นมูลค่า # 123?
Sagive SEO

คำตอบ:


23

ไม่มีเอกสารอยู่ แต่คุณสามารถใช้ตัวกรองเพื่อทำthe_titleสิ่งนี้ได้เสมอ:

add_filter('the_title','some_callback');
function some_callback($data){
    global $post;
    // where $data would be string(#) "current title"
    // Example:
    // (you would want to change $post->ID to however you are getting the book order #,
    // but you can see how it works this way with global $post;)
    return 'Book Order #' . $post->ID;
}

ดูเหล่านี้:

http://codex.wordpress.org/Function_Reference/the_title

http://codex.wordpress.org/Function_Reference/add_filter


ดูเหมือนว่าจะแทนที่ชื่อทั้งหมด ฉันจะแทนที่เฉพาะชื่อปัจจุบันได้อย่างไร
Petrus Theron

คุณจะต้องเพิ่มเงื่อนไขในการติดต่อกลับเช่นif ($post->ID == 45) { ... }
Nick Barrett

3
the_titleตัวกรองไม่ทำงานใน Wordpress รุ่นล่าสุดใช้document_title_partsหรือpre_get_document_titleกรองตามรายละเอียดในคำตอบอื่น ๆ
เบรนแดนนี

8

ในฐานะของ Wordpress 4.4 คุณสามารถใช้ตัวกรอง Wordpress document_title_partsเพื่อเปลี่ยนชื่อ

เพิ่มรายการต่อไปนี้ในfunctions.php:

add_filter('document_title_parts', 'my_custom_title');
function my_custom_title( $title ) {
  // $title is an array of title parts, including one called `title`

  $title['title'] = 'My new title';

  if (is_singular('post')) {
    $title['title'] = 'Fresh Post: ' . $title['title'];
  }

  return $title;
}

แต่คุณจะส่งผ่านพารามิเตอร์ไปยังตัวกรองได้ที่ไหน
Tintinabulator Zea

ดังกล่าวข้างต้นปรับเปลี่ยนฟังก์ชั่นทางthe_title()และget_the_title()ฟังก์ชั่นการทำงาน - จึงไม่จำเป็นต้องส่งผ่านพารามิเตอร์ใด ๆ
Brendan Nee

5

สำหรับผู้ที่ต้องการเปลี่ยนtitleคุณสมบัติของเอกสารฉันพบว่าการใช้wp_titleตัวกรองไม่ทำงานอีกต่อไป แต่ให้ใช้กรอง :pre_get_document_title

add_filter("pre_get_document_title", "my_callback");
function my_callback($old_title){
    return "My Modified Title";
}

แหล่ง


1
ขอขอบคุณที่กลับมาอีกครั้งในภายหลังเพื่อโพสต์อัปเดตนี้ ฉันใช้ wp_title ในปลั๊กอินของฉันมาหลายปีแล้วและไม่ได้ตระหนักว่ามันไม่ได้ทำงานอีกต่อไปจนกระทั่งตอนนี้และคำตอบของคุณช่วยฉันได้มาก ขอบคุณมาก!
MatthewLee

@ MatthewLee ดีใจที่ได้ยินมันช่วยคุณ :)
Nathan Arthur

2

ขึ้นอยู่กับว่าคุณต้องการแสดงชื่อที่กำหนดเองสำหรับหน้าปัจจุบัน (เช่นเนื้อหาของ<title></title>แท็กในส่วนหัว) หรือกรองชื่อของหน้าในส่วนเนื้อหาของหน้าหรือในรายชื่อ

ในกรณีก่อนหน้า (ชื่อของหน้าปัจจุบัน) ลองเพิ่มตัวกรองwp_title()เช่น: http://codex.wordpress.org/Plugin_API/Filter_Reference/wp_title

หากคุณต้องการแก้ไขชื่อเพจทั่วทั้งกระดานการกรองthe_title()จะทำเคล็ดลับ: http://codex.wordpress.org/Plugin_API/Filter_Reference/the_title


จากประสบการณ์จริงของฉันคุณต้องกรองทั้งสองwp_titleและthe_titleครอบคลุมทั้งสองอย่าง
Geoffrey

ฉันไม่แน่ใจว่ามันเป็นเพราะการคัดค้าน แต่ไม่ได้ทำงานให้ฉัน ฉันได้ลองใช้ชุดค่าผสมและตัวกรองแบบอินไลน์และ Apply_filters ใหม่ ('pre_get_document_title', ชื่อ $ string)
ลงจอด

น่าเศร้าที่ไม่ได้ผลกับฉันเช่นกัน
Debbie Kurth

คำตอบนี้มีอายุเกือบ 6 ปี ในฐานะโปสเตอร์ (และคนที่ไม่ได้ทำงานกับ WP อีกต่อไป) ฉันขอแนะนำให้ดูเอกสารล่าสุดแทน
nickb

1

เมื่อเปิดใช้งาน Yoast คุณจะต้องแทนที่ชื่อดังนี้:

add_filter('wpseo_title', 'custom_titles', 10, 1);
function custom_titles() {

  global $wp;
  $current_slug = $wp->request;

  if ($current_slug == 'foobar') {

    return 'Foobar';
  }
}

-2

ดังนั้นคุณต้องการเปลี่ยนชื่อเรื่องในแต่ละหน้า? ขั้นแรกตั้งค่าให้โพสต์ที่กำหนดเองพบกล่อง Smashing นิตยสารปกคลุมเมื่อเร็ว ๆ นี้: http://wp.smashingmagazine.com/2011/10/04/create-custom-post-meta-boxes-wordpress/ จากนั้นคุณสามารถสร้างฟังก์ชันอย่างง่ายเพื่อแทนที่ชื่อได้หากกล่องเมตาที่กำหนดเองมีค่า

มีปลั๊กอิน SEO หลายอย่างที่ให้ฟังก์ชันนี้ ลอง Yoast SEO เพื่อเป็นตัวอย่าง: http://wordpress.org/extend/plugins/wordpress-seo/

หวังว่านี่จะช่วยได้


1
โซลูชั่นเหล่านี้จะไม่เปลี่ยนชื่อ "แบบไดนามิก" แต่ "ด้วยตนเอง"
กุสตาโว

1
วิธีแก้ปัญหาที่เลวร้ายที่สุด
Vishal Kumar Sahu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.