2011-02-07 18 views
7

những cách khác nhau để phát hiện trang web wordpressCác cách khác nhau để phát hiện trang chủ trong wordpress là gì?

là gì ngoại trừ is_front_page()is_home()

Cảm ơn

+2

Điều gì là sai với 'is_home()'? – alex

+0

không hoạt động trong blog của tôi: ( –

+2

Tôi không biết WordPress tốt, nhưng bạn có thể làm điều đó nhanh chóng và dễ dàng với '$ isHome = ($ _SERVER ['REQUEST_URI'] == '/')' (hay bất kỳ Trang chủ là)? – alex

Trả lời

20

is_front_page() là những gì bạn muốn.

Tôi giả sử, thực tế là is_home() không hoạt động, trang chủ của bạn là tĩnh, theo cài đặt trong wp-admin.

is_home() trả về giá trị đúng trên trang blog chính của bạn trong khi is_front_page() trả về true trên trang nào được xác định là trang chủ, nguồn cấp dữ liệu hay không.

Từ codex:

này có điều kiện kiểm tra Tag nếu trang chính là một bài viết hay một trang. Đây là một hàm boolean, có nghĩa là nó trả về TRUE hoặc FALSE. Nó trả về TRUE khi trang blog chính đang được hiển thị và màn hình Settings-> Reading-> Front page được đặt thành "Your posts posts", hoặc khi được đặt thành "A static page" và giá trị "Front Page" là Trang hiện tại đang được hiển thị.

16

tôi chỉ thực hiện như sau:

if ($_SERVER["REQUEST_URI"] == '/') { } 

Nó hoạt động và không overcomplicate sự vật, đặc biệt là is_front_page()is_home() không phải lúc nào cũng hoạt động như bạn mong đợi.

+0

Đây có vẻ là séc duy nhất hoạt động đáng tin cậy nếu bạn có một danh mục làm trang chủ –

-1

is_home() là cách để thực hiện.

Bạn đã thử phương pháp này và phương pháp này không hoạt động? Nếu có, nó thường có một cái gì đó để làm với các thiết lập mod_rewrite hoặc các thiết lập wordpress chính nó.

+0

Đó không phải là trường hợp. –

0

Trong nhiều trường hợp, trang Wordpress có thể có is_home và is_frontpage cả hai đều đánh giá đúng trên trang chủ REAL và cũng trên trang blog chính. Sau khi xây dựng các trang web trong Wordpress trong khoảng 4 năm, điều này vẫn làm phiền tôi. Ví dụ: nếu bạn có trang web nơi bạn có bài đăng mới nhất trên trang chủ của mình có thể là thanh trượt hoặc một số yếu tố trung tâm khác trên trang chủ VÀ CÓ một trang blog khác, thì is_frontpage và is_home cả hai sẽ đánh giá đúng trên BOTH trang . Vì vậy, Wordpress không có một chức năng điều kiện rõ ràng cho trang chủ thực sự, ít nhất là cách hầu hết mọi người nghĩ về trang chủ của một trang web.

Vì vậy, tôi đồng ý với Liam rằng nếu bạn nhận được vào một tình huống khó hiểu, cái gì đó như if ($ _SERVER [ "REQUEST_URI"] == '/') {}

là đáng tin cậy hơn.

2

Với Twenty Ten tôi sử dụng:

<?php 
if ($_SERVER["REQUEST_URI"] == '/') { ?> 
    <h1 class="site-title"><?php bloginfo('name'); ?></h1> 
    <h2 class="site-description"><?php bloginfo('description'); ?></h2> 
<?php 
} else { ?> 
    <p class="site-title"><?php bloginfo('name'); ?></p> 
    <p class="site-description"><?php bloginfo('description'); ?></p> 
<?php } ?> 

trình như một nét duyên dáng ... $ _SERVER là một trong tôi luôn luôn sử dụng và nó luôn luôn hoạt động.

0

Tìm thấy câu hỏi này khoảng hai năm trước đây, đối phó với một thiết lập khá cụ thể:

Tôi muốn tải một mô-đun (công cụ tìm kiếm mặt) trên trang chủ và không phải trên bất kỳ trang nào khác. Rắc rối với nó là nó phải được bootstraped trên init để hoạt động đúng và nhanh.

Thông thường, tôi nên giải quyết cho answer của Liam Galvin.
Nhưng tôi không phải là người hâm mộ của lực lượng vũ phu giải pháp. Vì vậy, tôi đã xem qua số is_front_page() để xem lý do tại sao trả lại false trong thời gian init. Và nó khá đơn giản: nó dựa trên $wp_query, mà không được thiết lập tại thời điểm đó.

Vì vậy, tôi đã viết các chức năng dưới đây, (và sử dụng nó từ bao giờ), kết hợp tốt nhất của cả hai thế giới:
brute force trước $wp_query được thiết lập (tôi nên bao giờ cần đến nó) và cách WP thích sau:

function on_front_page() { 
    global $wp_query; 

    if (! isset($wp_query)) { 
    return $_SERVER["REQUEST_URI"] == '/'; 
    } else { 
    return $wp_query->is_front_page(); 
    } 
} 

Không còn, không ít hơn biến thể is_front_page(), với câu trả lời của Liam là dự phòng. Đã không chạy vào bất kỳ va chạm đặt tên nào được nêu ra nhưng cảm thấy tự do để đổi tên nó nếu bạn tìm thấy tên của nó quá phổ biến.

Sự thật là tôi sao chép/dán nó trong mọi dự án WP kể từ khi nó không thất bại một lần, vì vậy tôi nghĩ rằng tôi muốn chia sẻ.

0

từ bên ngoài vòng lặp:

if(get_option("page_on_front") == $post->ID){ 
    //do front page stuff here 
} 
Các vấn đề liên quan