2017-02-10 14 views
7

मेरे पास 2 कस्टम पोस्ट प्रकार पोस्ट हैं। वीडियो पोस्ट और सिटी-गाइड पोस्ट पहला पोस्ट (वीडियो पोस्ट) में यूआरएल है: 104.130.239.132/rick-owens/ और दूसरा पोस्ट (सिटी -गुइड पोस्ट) conatins url: http://104.130.239.132/city-guide/rick-owens/ (शहर-गाइड परमालिंक संरचित है जो कस्टम पोस्ट प्रकार का नाम है)। इसलिए जब भी हम पहले यूआरएल तक पहुंचने का प्रयास करते हैं तो यह समस्या यहां आती है, यह टेम्पलेट और दूसरी यूआरएल की सामग्री प्रदर्शित करती है। दूसरा यूआरएल नवीनतम प्रकाशित होता है। मैंने योआस्ट एसईओ प्लगइन को अक्षम करके हल करने के लिए खुद से कोशिश की, अभी भी कोई बदलाव नहीं हुआ और मेरा भी परमालिंक ताज़ा अभी भी एक ही परिणाम मिला है। enter image description here और दूसरा यूआरएल पोस्ट enter image description here की Yoast एसईओ टुकड़ा किसी भी मदद की सराहना की जाएगी, धन्यवाद:एक ही स्लग के साथ कस्टम पोस्ट एक ही स्लग के साथ गलत पोस्ट पर रीडायरेक्टिंग

पहले यूआरएल पद के लिए Yoast एसईओ टुकड़ा अटैच किया जा रहा।

अतिरिक्त:

यहां मेरे सीपीटी कोड हैं।

1.Video पोस्ट:

$labels = array(
'name'    => _x('Videos', 'Post Type General Name', 'roots'), 
'singular_name'  => _x('Video', 'Post Type Singular Name', 'roots'), 
'menu_name'   => __('Video Posts', 'roots'), 
'parent_item_colon' => __('Parent Video:', 'roots'), 
'all_items'   => __('All Videos', 'roots'), 
'view_item'   => __('View Video', 'roots'), 
'add_new_item'  => __('Add New Video', 'roots'), 
'add_new'    => __('Add New', 'roots'), 
'edit_item'   => __('Edit Video', 'roots'), 
'update_item'   => __('Update Video', 'roots'), 
'search_items'  => __('Search Video', 'roots'), 
'not_found'   => __('Not found', 'roots'), 
'not_found_in_trash' => __('Not found in Trash', 'roots'), 
); 
$rewrite = array(
'slug'    => 'rewrite', 
'with_front'   => true, 
'pages'    => true, 
'feeds'    => true, 
); 
$args = array(
'label'    => __('video', 'roots'), 
'description'   => __('Videos Post Type', 'roots'), 
'labels'    => $labels, 
'supports'   => array('title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'trackbacks', 'revisions', 'custom-fields',), 
'taxonomies'   => array('category', 'post_tag'), 
'hierarchical'  => false, 
'public'    => true, 
'show_ui'    => true, 
'show_in_menu'  => true, 
'show_in_nav_menus' => true, 
'show_in_admin_bar' => true, 
'menu_position'  => 5, 
'can_export'   => true, 
'has_archive'   => true, 
'exclude_from_search' => false, 
'publicly_queryable' => true, 
'rewrite'  => $rewrite, 
'capability_type'  => 'post', 
'yarpp_support' => TRUE 
); 
register_post_type('video', $args); 

2.City गाइड पोस्ट:

function register_post_types(){ 
register_post_type('city-guide', [ 
'has_archive' => TRUE, 
'hierarchical' => TRUE, 
'labels' => [ 
'name' => 'City Guide' 
], 
'public' => TRUE, 
'supports' => ['editor', 'page-attributes', 'revisions', 'thumbnail', 'title','custom-fields','excerpt'], 
'taxonomies' => array('post_tag') 
]); 
add_image_size('ipad-city-thumb', 650, 650, TRUE); 
} 
add_action('init', __NAMESPACE__.'\register_post_types', 20); 

मैं अपने कोड

remove /rewrite/ slug from custom permalinks, to allow domain/slug for all post types 
public function post_link_rewrite($post_link, $post, $leavename){ 
     $post_link = str_replace('/rewrite/', '/', $post_link); 

     return $post_link; 
    } 
+1

क्या आप रजिस्टर कस्टम पोस्ट प्रकार कोड plz दिखा सकते हैं? –

+0

@AshPatel hi मैंने अपने कोड जोड़े हैं। कृपया एक देखें – Melvin

उत्तर

1

यह समस्या में तो यह है, वास्तव में आम है के बाद से दो पोस्ट प्रकार का स्लग नाम समान है, जो नवीनतम है वह प्रदर्शित किया जाएगा। यह अब पोस्ट प्रकार को प्रतिबिंबित नहीं करता है। मुझे लगता है कि आपने परमालिंक संरचना में "पोस्ट-नाम" या% पोस्टनाम% चुना है। समस्या को हल करने के लिए, पहला और सबसे आसान तरीका पोस्ट में से किसी एक के पोस्ट स्लॉग को बदलना है।

दूसरा वर्डप्रेस के वर्ग कार्यों को फिर से लिखने के माध्यम से functions.php से पोस्ट प्रकार की परमालिंक संरचना को बदलना है। ऐसा करने के लिए, आपको पोस्ट शीर्षक के नीचे दिए गए लिंक को देखना होगा। ऐसा इसलिए है क्योंकि विशेष कस्टम पोस्ट प्रकार के पोस्ट प्रकार के स्लग को खोजने के लिए।

मैंने आपके स्थानीय इंस्टॉलेशन में अपना प्रदत्त कोड लागू किया है। अब मेरे पास 2 कस्टम पोस्ट प्रकार हैं और दोनों नाम "रिक ओवेन्स" में पोस्ट हैं जो स्लग "रिक-ओवेन्स" होंगे। सबसे पहले, वही त्रुटि का उल्लेख किया गया है जैसा कि उल्लेख किया गया है।

मैं ऊपर इस कोड को मेरे लिए काम किया है और परीक्षण किया है और यह भी आप के लिए काम करना चाहिए functions.php

function add_rewrite_rules_custom_post(){ 

global $wp_rewrite; 

    $structure = 'rewrite/%rewrite%'; 
    $structure1 = 'city-guide/%city-guide%'; 

    $wp_rewrite->add_permastruct('%rewrite%', $structure, false); 
    $wp_rewrite->add_permastruct('%city-guide%', $structure1, false); 
} 
add_action('init', 'add_rewrite_rules_custom_post'); 

में इस समारोह को जोड़कर इस समस्या का समाधान।

जैसा कि मैंने पहले ही उल्लेख किया है, आपको उस विशेष पोस्ट के संपादन पृष्ठ से पोस्ट यूआरएल पता होना चाहिए।

वीडियो कस्टम पोस्ट प्रकार के लिए, पोस्ट यूआरएल इस तरह होना चाहिए:

www.siteurl.com/rewrite/rick-owens शहर गाइड पोस्ट प्रकार के लिए, पोस्ट यूआरएल इस तरह होना चाहिए :

www.siteurl।कॉम/सिटी गाइड/रिक-ओवेन्स

यदि मैं सही हूं, तो वही लिंक संरचना आपके पृष्ठ में भी होनी चाहिए, इसलिए कोड को शीर्ष पर प्रदान किया जाना चाहिए। यदि आपके पास इससे अलग है तो मैंने ऊपर दिए गए लिंक का उल्लेख किया है, फिर उसके द्वारा प्रदान किए गए functions.php कोड में इसके अनुसार बदलें। उदाहरण के लिए, आप वीडियो कस्टम पोस्ट प्रकार के लिए है, तो

www.siteurl.com/video/rick-owens

फिर

$structure = 'video/%rewrite%'; 

see img for video url check

को functions.php कोड बदलने

यदि आपके पास शहर गाइड कस्टम पोस्ट प्रकार के लिए है,

www.siteurl.com/city_guide/rick-owens

$structure1 = 'city_guide/%rewrite%'; 

see img for city-guide url check

यह एक और विकल्प है, यदि कोई संघर्ष अपने प्रोजेक्ट में तुम्हारा के रूप में के रूप में इसी तरह के होते हैं जो मैं आमतौर पर करते हैं। अगर आपको यह नहीं मिला तो कृपया मुझे इस पोस्ट पर उल्लेख करें।

आशा है कि यह काम करेगा।

अपने अद्यतन प्रक्रिया से के रूप में

अपडेट किया गया उत्तर

function update_parse_request($query) { 

    if (! $query->is_main_query() || 2 != count($query->query) || ! isset($query->query['page'])) { 
     return; 
    } 

    if (! empty($query->query['name'])) { 
     $query->set('post_type', array('post', 'page', 'video', 'rewrite')); 
    } 
} 
add_action('pre_get_posts', 'update_parse_request'); 

आशा Wordpress मुख्य कार्यक्षमता के लिए अपने पद प्रकार को अपडेट करने के लिए इस कोड का उपयोग करें इस कोड को आप के लिए काम करेंगे और कृपया हटाने कोड जैसा कि मैंने पहले उल्लेख किया है और परमालिंक को अपडेट करना न भूलें।

धन्यवाद

नोट: यदि आप permalink एक बार आप नीचे दिए गए कोड के साथ functions.php

+0

कृपया मेरे अपडेट किए गए qn की जांच करें। वीडियो कस्टम पोस्ट प्रकार के लिए, पोस्ट यूआरएल www.siteurl.com/rick-owens – Melvin

+0

हाय क्या आप मुझे जवाब दे सकते हैं टिप्पणी के ऊपर – Melvin

+0

@Melvin मेरा अद्यतन उत्तर देखें ... उम्मीद है कि यह काम करता है। –

2

अपडेट रजिस्टर पोस्ट प्रकार कोड में कोड रखा अद्यतन करने के लिए मत भूलना, और यदि संभव शहर गाइड पोस्ट प्रकार

$labels = array(
'name'    => _x('Videos', 'Post Type General Name', 'roots'), 
'singular_name'  => _x('Video', 'Post Type Singular Name', 'roots'), 
'menu_name'   => __('Video Posts', 'roots'), 
'parent_item_colon' => __('Parent Video:', 'roots'), 
'all_items'   => __('All Videos', 'roots'), 
'view_item'   => __('View Video', 'roots'), 
'add_new_item'  => __('Add New Video', 'roots'), 
'add_new'    => __('Add New', 'roots'), 
'edit_item'   => __('Edit Video', 'roots'), 
'update_item'   => __('Update Video', 'roots'), 
'search_items'  => __('Search Video', 'roots'), 
'not_found'   => __('Not found', 'roots'), 
'not_found_in_trash' => __('Not found in Trash', 'roots'), 
); 

$args = array(
'labels'    => $labels, 
'supports'   => array('title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments',   'trackbacks', 'revisions', 'custom-fields',), 
'taxonomies'   => array('category', 'post_tag'), 
'hierarchical'  => false, 
'public'    => true, 
'show_ui'    => true, 
'show_in_menu'  => true, 
'show_in_nav_menus' => true, 
'show_in_admin_bar' => true, 
'menu_position'  => 5, 
'can_export'   => true, 
'has_archive'   => true, 
'exclude_from_search' => false, 
'publicly_queryable' => true, 
'query_var' => true, 
'rewrite'  => true, 
'capability_type'  => 'post', 
'yarpp_support' => TRUE 
); 
register_post_type('video', $args); 
+0

हाय क्या परिवर्तन आप यहाँ बना दिया है और मैं नहीं देख सकता स्लग यहाँ – Melvin

+0

मैं स्लग को हटा दिया है और query_var => true जोड़ सकते हैं और फिर से लिखने किया => true –

+0

क्या है कि वास्तव में क्या करता है? मैं स्पष्ट वास्तव में – Melvin

-1

आपके वर्डप्रेस परमालिंक सेटिंग में, उसी संरचना का उपयोग करें जैसे कस्टम संरचना /% श्रेणी% /% postname% /, फिर अपने पहले साक्षात्कार पद में, योस्ट एसईओ के गियर टैब पर ध्यान दें? आप कैनोनिकल यूआरएल के रूप में/रिक-ओवेन्स/डाल सकते हैं।

संबंधित मुद्दे