কাস্টম পোস্টের প্রকারে .html (ডট এইচটিএমএল) এক্সটেনশন যুক্ত করুন


10

প্লাগইন ছাড়াই.html কাস্টম পোস্ট ধরণের এক্সটেনশন যুক্ত করার কোনও উপায় আছে কি ?

পোস্টগুলির জন্য আমি /%postname.htmlপার্মালিঙ্ক সেটিংসে ব্যবহার করতে পারি

পৃষ্ঠাগুলির জন্য আমি ব্যবহার করতে পারি:

add_action('init', 'change_page_permalink', -1);
function change_page_permalink() {
    global $wp_rewrite;
    if ( strstr($wp_rewrite->get_page_permastruct(), '.html') != '.html' ) 
        $wp_rewrite->page_structure = $wp_rewrite->page_structure . '.html';
}

কাস্টম পোস্টের ধরণের জন্য ???

উপরের মত কোডের মতো কোনও কি কোনও টুকরো যা আমাকে .htmlকাস্টম পোস্ট টাইপ ইউআরএল পরিবর্তন করতে বা যুক্ত করতে মঞ্জুরি দেয় ?


5
আপনি কি কারণে html যুক্ত করতে চান তা ভাবছেন?
ভিন্স পেটিট

ঠিক আছে, function post-type_permalinkএকটি ত্রুটি নিক্ষেপ করবে। আপনি যদি এই ত্রুটিটি না পান তবে আপনার ডিবাগ সেটিংসে আপনার কিছু বেদনাদায়ক ভুল হয়েছে। এছাড়াও দয়া করে আপনার প্রশ্নটি লাইনের সঠিক উদ্দেশ্যগুলির সাথে পুনরায় কাজ করুন। ধন্যবাদ।
কায়সার

@ কাইজার, আমি কীভাবে কাস্টম পোস্টের ধরণগুলিতে একই প্যারামালিংক সেটিংস ব্যবহার করতে পারি তা জানা মাত্র। যদি আমি /$postname.htmlপোস্টগুলির জন্য সেট করি তবে আমি কীভাবে কাস্টম পোস্টের ধরণের জন্য এটি ব্যবহার করতে পারি।
ব্যবহারকারী 983248

আপনি আমার মন্তব্যে লিখেছেন একটি লাইন আপনি পড়া হয়নি, তাই না? আপনার কোড ঠিক করুন। এছাড়াও -ফাংশন নামে কাজ করে না ...
কায়সার

@ কাইজার হ্যাঁ আমি করেছি, তবে আমি ফ্ল্যাশ নই, এবং আমার একটি হাত সমস্যা আছে, তাই আমি যা ভাবি বা বলি তেমন টাইপ করতে পারছি না
user983248

উত্তর:


8

এটি কাজ করে বলে মনে হচ্ছে:

পুনরায় লেখার নিয়মগুলি তৈরি করুন post-type/post-name.html। আপনি অ্যারে ব্যবহার করতে পারেন কেবলমাত্র কিছু সেট পোস্টের জন্য তাদের সকলের জন্য না করে নিয়ম তৈরি করতে।

add_action( 'rewrite_rules_array', 'rewrite_rules' );
function rewrite_rules( $rules ) {
    $new_rules = array();
    foreach ( get_post_types() as $t )
        $new_rules[ $t . '/([^/]+)\.html$' ] = 'index.php?post_type=' . $t . '&name=$matches[1]';
    return $new_rules + $rules;
}

এই পোস্ট ধরণের জন্য নতুন permalink কাঠামো ফর্ম্যাট করুন।

add_filter( 'post_type_link', 'custom_post_permalink' ); // for cpt post_type_link (rather than post_link)
function custom_post_permalink ( $post_link ) {
    global $post;
    $type = get_post_type( $post->ID );
    return home_url( $type . '/' . $post->post_name . '.html' );
}

এবং তারপরে চলমান স্ল্যাশ সরিয়ে ফেলার জন্য ক্যানোনিকাল URL গুলি পুনর্নির্দেশ বন্ধ করুন। এর জন্য আরও কিছু কাজের প্রয়োজন হতে পারে, কারণ আপনি সম্ভবত বেশিরভাগ ক্ষেত্রে পুনর্নির্দেশটি রাখতে চান।

add_filter( 'redirect_canonical', '__return_false' );

অন্যরা যেমন এখানে বলেছে, উপরোক্ত কাজ করার পরে আপনাকে নিয়মগুলি ফ্লাশ করতে হবে এবং options-permalink.phpএডমিন পৃষ্ঠাতে গিয়ে এটি সম্ভব Dashboard -> Settings -> Permalinks


6
ওআই ভিনিসিয়াস, অনুলিপি দেওয়ার একটি ভাল অনুশীলন হ'ল অনুলিপি / পাস্তা সম্পর্কিত বিরোধগুলি এড়াতে wpse_59024_ (প্রশ্ন আইডি) দিয়ে সমস্ত ফাংশন নাম উপসর্গ করা । । । কোডটি আমাদের স্নিপেটস লাইব্রেরিতে অন্তর্ভুক্ত রয়েছে এমন উত্তরটি জানার অতিরিক্ত সুবিধা রয়েছে। । । । । +1 স্পট চালু!
brasofilo

এই কোড যে কোন অন্যান্য ফিল্টারের ব্যবহার ওভাররাইট করবে post_type_linkফিল্টার
টম জে Nowell

4

আপনি এটির জন্য একটি পুনর্লিখনের নিয়ম যুক্ত করতে পারেন যা অন্তর্নির্মিত পারমালিঙ্কগুলিকে ছাড়িয়ে যায়, যেমন একটি কাস্টম পোস্ট ধরণের "পণ্য" এর জন্য ...

add_action('init', 'add_html_ext_to_custom_post_types');
function add_html_ext_to_custom_post_types() {
    add_rewrite_rule('^product/([^/]+)\.html', 'index.php?product=$matches[1]', 'top');
}

(আপনার flush_rulesপারমিলিক্সগুলি পুনরায় সঞ্চয় করে বা উপরের টোটো নোটগুলিতে ব্যবহার করে আপনার নিয়মগুলি ফ্লাশ করতে ভুলবেন না )।

আদেশ সহকারে

  • আমি মনে করি না এর মতো ফাংশনগুলি the_permalink()এটি ব্যবহার করবে, সুতরাং আপনাকে এই post_linkলিঙ্কগুলি ধরার জন্য একটি ফিল্টার যুক্ত করতে হতে পারে । আপনি redirect_canonicalডিফল্ট পার্মলিংকগুলি পুনঃনির্দেশ করতে ফিল্টারে যুক্ত করতে পারেন, যাতে / পণ্য / foo এবং / product / foo / পুনঃনির্দেশে / প্রোডাক্ট / ফু। Html।
  • আপনার সাইট ব্যবহার করা অন্যান্য ইউআরএলগুলির জন্য ফিড ইউআরএল, পরবর্তী পৃষ্ঠাগুলি, ট্র্যাকব্যাকস ইত্যাদির জন্য আপনাকে পুনরায় লেখাগুলি যুক্ত করতে হবে উপরের কোডটি কেবলমাত্র প্রধান কাস্টম পোস্ট ধরণের পৃষ্ঠার জন্য কাজ করবে।

2

আপনি যদি নিজের জন্য কাজটি পরিচালনা করতে কোনও ওয়ার্ডপ্রেস প্লাগইন পছন্দ করেন তবে ওয়ার্ডপ্রেস প্লাগইন সংগ্রহস্থলে কাস্টম পোস্ট প্রকার পারমলিংকগুলি দেখুন । ওয়ার্ডপ্রেস 3.4.1 এ পরীক্ষিত এবং এটি পুরোপুরি কাজ করে।

প্লাগইনটি সক্রিয় করার পরে, কেবল ড্যাশবোর্ড -> সেটিংস -> পারমালিঙ্কস নেভিগেট করুন। আপনি প্রতিটি নিবন্ধিত কাস্টম পোস্ট ধরণের জন্য নির্দিষ্ট পুনর্লিখনগুলি যুক্ত করতে পারেন।


3
প্রতিটি পৃষ্ঠা লোডে পুনর্লিখনের নিয়মগুলি ফ্লাশ করবেন না।
ফুসিয়া

এই কোডটি কাজ করছে না, আপনি যদি xplus3.net/2010/05/20/wp3-custom-post-type-permalinks থেকে কোডটি অনুলিপি করে পেস্টও করেন তবে এটি পরীক্ষা
নিরীক্ষার

@ টসচো আপনি কীভাবে মনে করেন যে এটি করতে বা এটি বন্ধ করতে?
ইউজার 983248

1
flush_rules()কেবলমাত্র ডি / অ্যাক্টিভেশনে ডাকা উচিত কারণ এটি খুব ধীর। $GLOBALS['wp_rewrite']->rulesবিধিগুলি ইতিমধ্যে জানা আছে কিনা তা পরীক্ষা করে দেখতে পারেন।
ফুসিয়া

@ মিশেল একলুন্ড এটি একটি 404 দেয় যা আমি কাজ করি না। আপনি কি কোডটি পরীক্ষা করেছেন?
ইউজার 983248
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.