मैंने ऐसा करने के दो तरीके खोजे हैं:
- एक कस्टम पुनर्लेखन नियम के साथ लेखक पृष्ठ
- एक कस्टम टेम्पलेट फ़ाइलों को फिर से लिखना नियम के साथ जोड़ा गया है
पहले लागू करने के लिए अधिक सरल है, लेकिन सभी परिस्थितियों में काम नहीं कर सकता है (जिनमें से एक मैं जल्द ही वर्णन करूंगा)।
कस्टम रीराइट नियम
मुझे यह समाधान कुछ दिन पहले यहां मिला था: यूआरएल रिवाइटरिंग
और यहाँ कोड है, टिप्पणियों के साथ:
// Define the author levels you want to use
$custom_author_levels = array( 'user', 'leader' );
// On init, add a new author_level rewrite tag and add it to the author_base property of wp_rewrite
add_action( 'init', 'wpleet_init' );
function wpleet_init()
{
global $wp_rewrite;
$author_levels = $GLOBALS['custom_author_levels'];
// Define the tag and use it in the rewrite rule
add_rewrite_tag( '%author_level%', '(' . implode( '|', $author_levels ) . ')' );
$wp_rewrite->author_base = '%author_level%';
}
// The previous function creates extra author_name rewrite rules that are unnecessary.
//This function tests for and removes them
add_filter( 'author_rewrite_rules', 'wpleet_author_rewrite_rules' );
function wpleet_author_rewrite_rules( $author_rewrite_rules )
{
foreach ( $author_rewrite_rules as $pattern => $substitution ) {
if ( FALSE === strpos( $substitution, 'author_name' ) ) {
unset( $author_rewrite_rules[$pattern] );
}
}
return $author_rewrite_rules;
}
फिर आप अपने दिल की सामग्री को संशोधित करके लेखक में निर्मित टेम्पलेट का उपयोग कर सकते हैं।
ईमानदारी से, ऊपर सूचीबद्ध लिंक की जाँच करें, क्योंकि Jan Fabry एक उत्कृष्ट काम करता है जो सब कुछ समझाता है।
क्वेरी संस्करण और पृष्ठ टेम्पलेट
इन समाधानों की खोज करते समय मैं जिस विषय पर काम कर रहा था, उसके लिए मुझे एक उपयोगकर्ता मेटा मान (एक अलग आईडी) के आधार पर एक कस्टम पृष्ठ की सेवा करने की आवश्यकता थी। मेरा ग्राहक सार्वजनिक रूप से उपयोगकर्ता नाम या उपयोगकर्ता आईडी नहीं देखना चाहता था, इसलिए हमने एक अलग परत बनाई।
एकमात्र समस्या? फिलहाल, कोई स्पष्ट तरीका नहीं है कि मेटा एपीआई / मानों द्वारा क्वेरी के लिए रीराइट एपीआई का उपयोग कैसे करें। सौभाग्य से, वहाँ एक समाधान था।
अपने कार्यों में। Php फ़ाइल ...
// Create the query var so that WP catches your custom /user/username url
add_filter( 'query_vars', 'wpleet_rewrite_add_var' );
function wpleet_rewrite_add_var( $vars )
{
$vars[] = 'user';
return $vars;
}
और फिर, आपको एक नया फिर से लिखना टैग और नियम बनाने की आवश्यकता है ताकि यह पता चले कि नए क्वेरी संस्करण को कब और कैसे संभालना है।
add_rewrite_tag( '%user%', '([^&]+)' );
add_rewrite_rule(
'^user/([^/]*)/?',
'index.php?user=$matches[1]',
'top'
);
एक बार जब आप ऐसा कर लेते हैं, तो आपको केवल "कैच" की आवश्यकता होती है, जब क्वेरी संस्करण परोसा जा रहा हो, और फिर अपनी पसंद के टेम्पलेट पर पुनर्निर्देशित करें:
add_action( 'template_redirect', 'wpleet_rewrite_catch' );
function wpleet_rewrite_catch()
{
global $wp_query;
if ( array_key_exists( 'user', $wp_query->query_vars ) ) {
include (TEMPLATEPATH . '/user-profile.php');
exit;
}
}
बस सुनिश्चित करें कि आपने user-profile.php बनाया है।
अपने स्वयं के उदाहरण में, मैंने एक तीसरा फ़ंक्शन बनाया जो $ wpdb-> usermeta तालिका के माध्यम से वास्तविक user_id से "सार्वजनिक उपयोगकर्ता आईडी" से मेल खाता है, और जानकारी को टेम्पलेट में पास कर दिया है।
यदि आपको अपने विषय के बाकी हिस्सों से अलग एक टेम्पलेट बनाने की आवश्यकता है, तो याद रखें कि get_header के साथ, आप एक नाम निर्दिष्ट कर सकते हैं:
get_header( 'user' );
जो हैडर-user.php फाइल को कॉल करेगा।
निष्कर्ष
ये दोनों ही मान्य हैं, काम कर रहे समाधान। दूसरा "सुरक्षा" की एक अलग परत प्रदान करता है क्योंकि यह उपयोगकर्ता आईडी या उपयोगकर्ता नाम प्रकट नहीं करता है, अगर अन्य लोग प्रोफ़ाइल ब्राउज़ करने में सक्षम होंगे।
आशा है कि मदद करता है, मुझे पता है अगर आप किसी भी प्रश्न हैं।