ফাংশন.এফপি এর মাধ্যমে কীভাবে পার্মালিঙ্ক কাঠামো সেট করবেন to


10

আমি একটি ওয়ার্ডপ্রেস নেটওয়ার্ক স্থাপন করছি এবং সমস্ত নতুন সাইটগুলিতে একই পারমালিঙ্ক কাঠামো থাকতে চাই (যেমন "/% বছর% /% মাসনাম% /% পোস্টনাম% /")। আমি ভাবছি যে ফাংশন.এফপিতে হুক বা হ্যাকের মাধ্যমে এটি করা সম্ভব কিনা, সেই কাঠামোটি বেছে নেওয়ার জন্য ব্যবহারকারীদের উপর নির্ভর না করেই।

উত্তর:


15

set_permalink_structure()গ্লোবাল $wp_rewriteঅবজেক্টের পদ্ধতিতে কল করে আপনি পারমালিঙ্ক কাঠামো সেট করতে পারেন ।

add_action( 'init', function() {
    global $wp_rewrite;
    $wp_rewrite->set_permalink_structure( '/%year%/%monthnum%/%postname%/' );
} );

আপনি যদি ত্রুটি পেয়ে থাকেন তবে কোডটির একটি পিএইচপি <5.3 সংস্করণ এখানে।

function reset_permalinks() {
    global $wp_rewrite;
    $wp_rewrite->set_permalink_structure( '/%year%/%monthnum%/%postname%/' );
}
add_action( 'init', 'reset_permalinks' );

আপনার কোড অনুলিপি করা এবং আটকানো একটি ত্রুটি তৈরি করে তবে যুক্তিটি কৌশলটি কার্যকর করে! আমার প্রশ্ন / উদ্দেশ্যগুলি যদি ভাল অনুশীলন হয় তবে আমি কেবলই আশ্চর্য হয়েছি ...
টমাস বুটেলার

1
টমাস, উত্তর গ্রহণের জন্য ধন্যবাদ। ভাল লাগছে সাহায্য করা হয়েছে। ভাল অভ্যাস হিসাবে - আমি মনে করি যে যদি আপনার উদ্দেশ্যটি যদি ওয়েবসাইটের মাধ্যমে এই জাতীয় পার্মালিঙ্ক কাঠামো প্রয়োগ এবং লক করা হয় - তবে এটি ন্যায়সঙ্গত; এবং 'লক' দ্বারা আমার অর্থ কোডটি অ্যাডমিনের মাধ্যমে কাঠামোটিতে কোনও পরিবর্তন আনতে দেয় না, যদি তা ঠিক থাকে তবে আমি মনে করি এটি করা সম্পূর্ণ ঠিক আছে।
সোলসেকাহ

1
এটি কাজ করে তবে অ্যাডমিন পার্মালিঙ্ক পৃষ্ঠা থেকে (পোস্টগুলিতে ৪০৪) সংরক্ষণ করলে তা দ্বন্দ্ব সৃষ্টি করে। তারপরে সাইটটি লোড হয়ে গেলে (প্রসেস ইন হুক) পারমালিঙ্ক কাঠামো আবার পরিবর্তন হয় (পোস্টগুলিতে আবার 404)। ব্যবহার $wp_rewrite->flush_rules();সমস্যা সমাধান করে। এটিকে আরম্ভের সময়ে ব্যবহার এবং প্রতিবার চালানোর জন্য খারাপ অনুশীলন। কেবল পারমালিঙ্কস পৃষ্ঠায় গিয়ে কৌশলগুলি করবে।
সিসির

1
পুরো অভিপ্রায়টি ছিল পারমালিক্স বিকল্পগুলির পৃষ্ঠাটি অক্ষম করার জন্য, তাই সম্ভবত আমি এটি থেকে দূরে যেতে পারি?
টমাস বুটেলার 15

3
এটি 'আফটার_সুইচ_থেম' বা প্লাগইন অ্যাক্টিভেশনে কল করা উচিত এবং তারপরে 'ফ্লাশ_উইরাইট_রুলেস ()'
সিএসএসটিডি

2

পূর্ববর্তী উত্তর কাজ করছে না। আমি একটি শুদ্ধ সমাধান পেয়েছি। ব্যবহার করতে পারেন এই কোডটি ব্যবহার করুন। এটি 100% কাজ করবে। ধন্যবাদ

/**
 * Rewrite set up, when theme activate i mean
 */
if (isset($_GET['activated']) && is_admin()) {
    global $wp_rewrite;
    $wp_rewrite->set_permalink_structure('/%postname%/');
    $wp_rewrite->flush_rules();
}

/**
* Redirect to Permalink setting Page.
* Otherwise Redirect rule will not work Properly.
*/
function redirect_to_permalink() {

    wp_redirect('options-permalink.php');
}
add_action( 'after_switch_theme', 'redirect_to_permalink' );

0
function setPermaLink(){
    $ps = '/%category%/%postname%/';
    $permalink_structure = sanitize_option( 'permalink_structure', $ps);
    $blog_prefix = '/blog';
    $prefix = '/index.php';

    if ( ! empty( $permalink_structure ) ) {
        $permalink_structure = preg_replace( '#/+#', '/', '/' . str_replace( '#', '', $permalink_structure ) );
        if ( $prefix && $blog_prefix ) {
            $permalink_structure = $prefix . preg_replace( '#^/?index\.php#', '', $permalink_structure );
        } else {
            $permalink_structure = $blog_prefix . $permalink_structure;
        }
    }

    $wp_rewrite->set_permalink_structure( $permalink_structure );
    flush_rewrite_rules();
}

setPermaLink();
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.