ইউআরএল থেকে কাস্টম পোস্ট ধরণের স্লাগ সরান


15

এর জন্য কার্যকর উত্তর খুঁজে পাওয়া যায় নি। সংঘাতের সমস্যাগুলি এবং এটির দ্বারা সৃষ্ট সমস্ত সমস্যা সম্পর্কে আমি অবগত রয়েছি, যদি আমি এটি সফল না হয় তবে এটি আগ্রহী। এর জন্য ডব্লিউপি পুনর্লিখনের প্রয়োজন হবে, আমি এটি অনেক জানি।

মূলত, ধরা যাক আমাদের "ইভেন্টস" এর একটি সিপিটি রয়েছে। আমি একটি একক ইভেন্টের পৃষ্ঠা URL আছে চাই http://domain.com/single-event-name এবং না http://domain.com/events/single-event-name । এটি সম্পর্কে কীভাবে কোনও ধারণা?


সর্বদা এটি সম্পর্কে জানতে চেয়েছিলেন, কখনও প্রশ্ন জিজ্ঞাসা করার কথা ভাবেন নি। ধন্যবাদ!
ফিশচি

2015 এ @রোবনেট এখনও শৈলীতে এটি করার কোনও বৈধ উপায় বলে মনে হচ্ছে না।
বেন র্যাকিকোট

উত্তর:


9

এভাবেই আপনি কাজের প্রথম অংশটি করতে পারেন - পোস্ট লিঙ্কে সিপিটি স্লাগ মুক্ত করুন (যেমন নিউজ পোস্টের ধরণ)।

function df_custom_post_type_link( $post_link, $id = 0 ) {  

    $post = get_post($id);  

    if ( is_wp_error($post) || 'news' != $post->post_type || empty($post->post_name) )  
        return $post_link;  

    return home_url(user_trailingslashit( "$post->post_name" ));  
}
add_filter( 'post_type_link', 'df_custom_post_type_link' , 10, 2 );

'নিউজ' এর জন্য এখন আবার রাইট রাইটস থাকা উচিত, কারণ আপনি একটি 404 ত্রুটি পাবেন।

পুনরায় লেখার নিয়মটি এভাবে যুক্ত করুন:

function df_custom_rewrite_rule() {
    add_rewrite_rule('(.*?)$', 'index.php?news=$matches[1]', 'top');
}
add_action('init', 'df_custom_rewrite_rule');

তারপরে আমাদের পুনর্লিখনের নিয়মগুলি ফ্লাশ করা দরকার, তাই সেটিংস - পারমলিংকস এ যান এবং পরিবর্তনগুলি সংরক্ষণ করুন।


1
আপনি init এ পুনর্লিখনের নিয়ম যুক্ত করা উচিত নয়। আপনার কেবলমাত্র বর্তমান বিধিগুলিতে আপনার বিধি যুক্ত করা উচিত।
ক্রিস_ও

2
@ ক্রিস_ও কি আপনি বিস্তারিত বলতে পারবেন? কীভাবে কেউ বর্তমানের বিধিগুলিতে এই বিধি যুক্ত করবে?
দেশি

এই কোড, URL গুলি থাকার হিসাবে আমার পেজের সব যোগ করার পরে example.com/about-us কাজ করা বন্ধ করে? এর কোন সমাধান?
রাহুল গুপ্ত

4

স্লাগ সরিয়ে দেওয়ার জন্য আপনি এই প্লাগইনটি ব্যবহার করতে পারেন ( http://wordpress.org/extend/plugins/remove-slug-from-custom-post-type/ ) % /


ঠিক এই প্লাগইনটি দুর্দান্ত! আমি এই প্লাগইনটির একজন অভিজ্ঞ ব্যবহারকারী এবং আমি এটির পুরোপুরি প্রস্তাব দিই! এখানে প্লাগইন এর সাইটের লিংক যার ফলে এটি গভীরতা ব্যাখ্যা করেন ultimatewebtips.com/remove-slug-from-custom-post-type
Kuldeep Daftary

এটি একটি দুর্দান্ত প্লাগইন এবং এটির বৈশিষ্ট্যটি আমি সন্ধান করছি। @ বার্টোস সমাধান বিশেষত একটি সিপিটি-র কাছে, যদিও আপনি এটি থেকে সাধারণ ধারণা পান। এই প্লাগিনটি খননের পরে এটি এখন সমস্ত পরিষ্কার হয়ে গেছে, আপনাকে ধন্যবাদ!
ফিশচি

0

অনুরোধকৃত নামেরটির সাথে একটি কাস্টম টাইপ রয়েছে কিনা তা জানতে এবং অনুসন্ধানের উত্তরগুলি যথাযথভাবে সংশোধন করার জন্য আপনি সর্বদা "পার্সে_রেইকুস্ট" এ প্রবেশ করতে পারেন। পারমালিঙ্কটি তৈরি করতে আপনার কাছে @ বার্তোসজের প্রতিক্রিয়া অনুসারে আপনার কিছু প্রয়োজন হবে:

 add_filter('parse_request', "t21_parse_request" , 1, 1);

 function t21_parse_request($wbobj)
 {
      $vars = $wpobj->query_vars;
      $slug = $query_vars['pagename'];

      $posts = get_posts(array(
           "post_type" => "event",
           "post_name" => $slug
      ));

      if($posts)
      {
           //we know your "event" entry exists so we now amend the query_vars
           //first unset the 'page' and 'pagename'
           unset($query_vars['page']);
           unset($query_vars['pagename'];

           //now rebuild the query_vars
           $query_vars['post_type'] = "event"; //CPT name
           $query_vars['name'] = $slug;
           $query_vars['event'] = $slug //again - this constructs the "event=myevent" query string
      }
      else
      {
           //just return $wpobj since we know that there is no "event"
           return $wpobj;
      }
 }

এটি ধরেই নেওয়া হয় যে পোস্টের মতো একই নামের সাথে আপনার কোনও পোস্টের নাম থাকবে না অন্যথায়, পোস্টটি কোনও ইভেন্ট টাইপের সাথে মেলে এমনটি কখনই উপস্থিত হবে না।


0
function register_cpt_type() {
    register_post_type('cpt', array(
        'rewrite' => array("slug" => "/cpt", "with_front" => false),
    ));
}
add_action('init', 'register_cpt_type')

function cpt_rewrite_rule() {
    add_rewrite_rule('(.*?)$', 'index.php?cpt=$matches[1]', 'top');
}
add_action('after_theme_setup', 'cpt_rewrite_rule');

ফ্লাশ / রিসাইকেল ইউআরএল পুনর্লিখন, তারপরে htaccess সম্পাদনা করুন

RewriteRule ^cpt/(.+)$ /$1 [R=301,L]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.