এটি করার দুটি উপায় রয়েছে:
- কাস্টম পুনর্লিখনের নিয়ম সহ লেখক পৃষ্ঠা
- একটি কাস্টম টেম্পলেট ফাইলগুলি পুনর্লিখনের নিয়মের সাথে যুক্ত
প্রথমটি প্রয়োগ করা আরও সহজ, তবে সমস্ত পরিস্থিতিতে কাজ নাও করতে পারে (যার মধ্যে একটিটি আমি শীঘ্রই বর্ণনা করব)।
কাস্টম পুনর্লিখন বিধি
আমি এই সমাধানটি কয়েক দিন আগে এখানে পেয়েছি: ইউআরএল পুনরায় লেখা
এবং মন্তব্য সহ কোড এখানে:
// 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;
}
তারপরে আপনি বিল্ট ইন লেখক.এফপি টেম্পলেটটি ব্যবহার করতে পারেন, আপনার হৃদয়ের সামগ্রীতে পরিবর্তন করতে পারেন।
বিনীতভাবে, উপরে তালিকাভুক্ত লিঙ্কটি চেক করুন, কারণ জন ফ্যাব্রি সমস্ত কিছু ব্যাখ্যা করার জন্য একটি দুর্দান্ত কাজ করেছেন।
প্রশ্ন এবং যুদ্ধ পৃষ্ঠা পৃষ্ঠা
এই সমাধানগুলি আবিষ্কার করার সময় আমি যে থিমটিতে কাজ করছিলাম তার জন্য, আমার ব্যবহারকারীর মেটা মান (একটি পৃথক আইডি) এর উপর ভিত্তি করে একটি কাস্টম পৃষ্ঠা পরিবেশন করা দরকার। আমার ক্লায়েন্টটি ব্যবহারকারীর নাম বা ব্যবহারকারীর আইডি সর্বজনীনভাবে দৃশ্যমান হতে চায়নি, তাই আমরা একটি পৃথক স্তর তৈরি করেছি।
সমস্যাটি? এই মুহুর্তে, মেটা কী / মানগুলির দ্বারা ক্যোয়ারী করার জন্য পুনর্লিখনের এপিআই কীভাবে ব্যবহার করতে হবে তার কোনও সুস্পষ্ট উপায় নেই। ভাগ্যক্রমে, একটি সমাধান ছিল।
আপনার ফাংশন.এফপি ফাইলটিতে ...
// 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;
}
}
আপনি ব্যবহারকারী-প্রোফাইল.php তৈরি করেছেন তা নিশ্চিত করুন।
আমার নিজস্ব উদাহরণে, আমি একটি তৃতীয় ফাংশন তৈরি করেছি যা "পাবলিক ইউজার আইডি" এর সাথে মিলিয়ে user wpdb-> ইউজারমেটা টেবিলের মাধ্যমে প্রকৃত ইউজার_আইডির সাথে মেলে এবং তথ্যটি টেমপ্লেটে পাস করে।
আপনার যদি আপনার থিমের বাকী অংশ থেকে আলাদা কোনও টেম্পলেট তৈরি করতে হয় তবে মনে রাখবেন যে get_header সহ আপনি একটি নাম নির্দিষ্ট করতে পারেন:
get_header( 'user' );
যা হেডার-User.php ফাইল কল করবে।
উপসংহার
এই দুটিই কার্যকর, কার্যক্ষম সমাধান। দ্বিতীয়টি "সুরক্ষা" এর পৃথক স্তর সরবরাহ করে কারণ এটি ব্যবহারকারীর আইডি বা ব্যবহারকারীর নাম প্রকাশ করে না, যদি অন্য লোকেরা প্রোফাইলগুলি ব্রাউজ করতে সক্ষম হয়।
আশা করি এটি সহায়তা করে, আপনার কোনও প্রশ্ন থাকলে আমাকে জানান know