कार्यों के माध्यम से पर्मलिंक संरचना कैसे सेट करें। पीपी


10

मैं एक Wordpress Network स्थापित कर रहा हूं और चाहता था कि सभी नई साइटों में समान पर्मलिंक संरचना हो (अर्थात "/% वर्ष% /% माहसूत्र% /% postname% /")। मुझे आश्चर्य हो रहा है कि यह कार्य करने के लिए उपयोगकर्ताओं पर भरोसा करने के लिए, बिना संरचना के हुक या हैक के माध्यम से करना संभव है।

जवाबों:


15

आप पर्मलिंक संरचना set_permalink_structure()को वैश्विक $wp_rewriteऑब्जेक्ट की विधि पर कॉल करके सेट कर सकते हैं ।

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

यदि आप त्रुटियाँ प्राप्त कर रहे हैं तो मामले में कोड का PHP <5.3 संस्करण है।

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

अपने कोड को कॉपी और पेस्ट करना एक त्रुटि उत्पन्न करता है, लेकिन तर्क करता है! मुझे केवल आश्चर्य है कि क्या मेरा प्रश्न / इरादा अच्छा अभ्यास है, हालांकि ...
टॉमस बटलर

1
टॉमस, जवाब स्वीकार करने के लिए धन्यवाद। खुशी है कि मदद की है। जैसा कि अच्छी प्रथाओं के लिए - मुझे लगता है कि यदि आपका उद्देश्य वेबसाइटों में इस तरह के एक पर्मलिंक संरचना को लागू करना और बंद करना है - तो यह उचित है; और 'लॉक' से मेरा मतलब है कि कोड एडमिन के माध्यम से संरचना में कोई बदलाव नहीं होने देगा, अगर यह ठीक है तो मुझे लगता है कि ऐसा करना पूरी तरह से ठीक है।
आत्मासेकाह

1
यह काम करता है लेकिन यह एक संघर्ष का कारण बनता है जब व्यवस्थापक पर्मलिंक पेज (पदों पर 404) से बचाता है। फिर जब साइट लोड होती है (प्रॉफिट इनक हुक) पर्मलिंक संरचना फिर से बदल जाती है (फिर से पदों पर 404)। का उपयोग कर $wp_rewrite->flush_rules();हल समस्या। खराब प्रैक्टिस इसे इनिट पर इस्तेमाल करने और हर बार चलाने के लिए। बस Permalinks पेज पर जाकर ट्रिक्स करेंगे।
सिसिर

1
संपूर्ण इरादा पर्मलिंक्स विकल्प पृष्ठ को अक्षम करना था, इसलिए शायद मैं इसके साथ भाग सकता हूं?
टॉमस बटलर

3
इसे 'after_switch_theme' या प्लगइन सक्रियण पर और 'flush_rewrite_rules ()'
csstd

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();
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.