आप एक पेज और एक ही नाम के साथ एक कस्टम पोस्ट टाइप करना चाहते हैं
शायद पेड़ साल पहले यह असंभव था, लेकिन अब आप कर सकते हैं।
सबसे पहले, इस पंक्तियों को $args
अपने पोस्ट प्रकार में जोड़ें :
'has_archive' => false,
'rewrite' => array(
'slug' => 'your slug', // if you need slug
'with_front' => false,
),
दूसरा, functions.php
जोड़ने की क्रिया में:
add_action('init', 'custom_rewrite_basic');
function custom_rewrite_basic() {
global $wp_post_types;
foreach ($wp_post_types as $wp_post_type) {
if ($wp_post_type->_builtin) continue;
if (!$wp_post_type->has_archive && isset($wp_post_type->rewrite) && isset($wp_post_type->rewrite['with_front']) && !$wp_post_type->rewrite['with_front']) {
$slug = (isset($wp_post_type->rewrite['slug']) ? $wp_post_type->rewrite['slug'] : $wp_post_type->name);
$page = get_page_by_slug($slug);
if ($page) add_rewrite_rule('^' .$slug .'/page/([0-9]+)/?', 'index.php?page_id=' .$page->ID .'&paged=$matches[1]', 'top');
}
}
}
function get_page_by_slug($page_slug, $output = OBJECT, $post_type = 'page' ) {
global $wpdb;
$page = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_name = %s AND post_type= %s AND post_status = 'publish'", $page_slug, $post_type ) );
return ($page ? get_post($page, $output) : NULL);
}
डैशबोर्ड में नियमों को फ्लश करना न भूलें।
pre_get_posts
? फिर आप अपने लिखने के बजाय पेजेशन कोड में निर्मित का उपयोग कर सकते हैं, और आप एक मानक पोस्ट लूप को सरल कर सकते हैं