On the Reading Settings page you can set a “Front Page” and a “Posts Page”. You can check whether the current page is_front_page();
Is there a similar function for the “Posts Page”. I have noticed that is_page(); does not work for this special page.
Thanks
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
is_home() checks for the “Posts Page”, despite the somewhat confusing function name.
Method 2
WordPress comes with 7 primary template page types, which can be determined on this way
if ( is_main_query() ) {
// Error
if ( is_404() ) {
;
}
// Front page
if ( is_front_page() ) {
;
}
// Archive
if ( is_archive() ) {
;
}
// Comments popup
if ( is_comments_popup() ) {
;
}
// Search
if ( is_search() ) {
;
}
// Singular
if ( is_singular() ) {
;
}
// Home - the blog page
if ( is_home() ) {
;
}
}
is_home tells to you, that you have the blog page.
Method 3
“Posts page” is usually an archive of:
- posts of a category
- posts of a tag
- posts of a date ( year, month…)
- posts of main archive
Each one of these can be checked by a one of the many conditional tags like
is_category()
is_tag()
is_date()
is_archive()
And so many more. To get a better understanding head over to the codex http://codex.wordpress.org/Conditional_Tags
Method 4
First check the blogs related things like author, tag, post type
function is_blog () {
global $post;
$posttype = get_post_type($post );
return ( ((is_archive()) || (is_author()) || (is_category()) || (is_home()) || (is_single()) || (is_tag())) && ( $posttype == 'post') ) ? true : false ;
}
Now check and return something which you want to have
function check_post_type(){
$postType;
if (is_blog())
{
$postType = 'I am post';
} else
{
$postType = 'I am page';
};
return $postType;
}
Use it like Boss
<?php echo check_post_type();?>
Thanks to Wes Bos
Method 5
https://codex.wordpress.org/Conditional_Tags in WordPress Codex sais that you can reference pages like so:
if ( is_front_page() && is_home() ) {
// Default homepage
} elseif ( is_front_page() ) {
// static homepage
} elseif ( is_home() ) {
// blog page
} else {
//everything else
}
Method 6
TL;DR
Case A. There is no need to determine it inside the main template file (index.php) because it is the default template for it[1].
Case B. To determine it inside a page template (ex: page.php), simply check it like so:
get_option( 'page_for_posts' ) == get_the_ID()
Details
I literally went digging the source-code[2] of it just to be able to know how wordpress does the checking of the value. It turns out, it is using the statement get_option( 'page_for_posts' ) to know the post ID of the selected value of the Posts page.
So yeah, for this purpose, there is no such official checker function that is similar to is_front_page().
As long as you know the ID of the page that you’ve selected then you can use it for the checking process.
References
- WordPress Codex, Theme Development, codex.wordpress.org/Theme_Development
- Source-code of Settings › Reading Settings, github.com/WordPress/…/wp-admin/options-reading.php
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0