ব্যবহারকারী নাম থেকে ডাকনামে লেখক স্লাগ পরিবর্তন করুন


13

সম্প্রদায়কে হাই,
যদি পাওয়া যায় তবে ডিফল্ট ব্যবহারকারীর নাম স্লগকে ডাকনামে পরিবর্তন করা কি সম্ভব?

ডিফল্টরূপে ইউআরএলটি হ'ল এই জাতীয় কিছু: http: //domain.tld/author/ (অ্যাডমিন ),
কি আবার লিখতে এবং http: //domain.tld/author/ (ডাক নাম ) এ পরিবর্তন করা সম্ভব তাই যদি কোনও ব্যবহারকারী তার ডাকনাম পরিবর্তন করে প্রোফাইল পৃষ্ঠা থেকে স্লাগ ব্যবহারকারীর দেওয়া নতুন নামেও বদলে যাবে?

অনেক ধন্যবাদ!
ফিলিপ


আমি মনে করি না আপনি বাস্তবসম্মতভাবে পারবেন, এমন কোনও ক্যুরি_ভার নেই যা ব্যবহারকারীর ডাকনামের উপর ভিত্তি করে পোস্টগুলি খুঁজে পাবে, সুতরাং একটি পুনর্লিখনের নিয়মে ডাক নামটি ম্যাপ করার জন্য কোনও উপযুক্ত পরিবর্তনশীল নেই। যে কোনও পুনর্লিখন কোডের পাশাপাশি ডাকনাম অনুসন্ধানগুলি মোকাবেলা করার জন্য আপনার নিজের ক্যোয়ারী ভ্যার হ্যান্ডলিং যুক্ত করতে হবে (তাত্ত্বিকভাবে এটি সম্ভব, তবে আমি অনুভব করি না যে এটি অনুশীলনে মার্জিত হবে)।
t31os

উত্তর:


17

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

লেখকের ইউআরএল পরিবর্তন করা হচ্ছে

এই প্রশ্নের দুটি অংশ রয়েছে: লেখক স্লাগের পরিবর্তে লেখক ডাকনামের সাথে আগত লিঙ্কগুলি পরিচালনা করুন এবং স্ট্যান্ডার্ড স্লাগের পরিবর্তে ডাকনাম সহ লেখক পোস্ট url উত্পন্ন করুন।

প্রথম অংশটি requestফিল্টারটিতে ঝাঁকুনির মাধ্যমে সমাধান করা হয় , এটি কোনও লেখকের অনুরোধ কিনা তা যাচাই করে এবং স্লগের পরিবর্তে ডাকনাম দিয়ে লেখককে সন্ধান করে। যদি আমরা কোনও লেখক পাই তবে আমরা লেখক আইডি ব্যবহারের জন্য ক্যোয়ারীর প্যারামিটারগুলি পরিবর্তন করি।

add_filter( 'request', 'wpse5742_request' );
function wpse5742_request( $query_vars )
{
    if ( array_key_exists( 'author_name', $query_vars ) ) {
        global $wpdb;
        $author_id = $wpdb->get_var( $wpdb->prepare( "SELECT user_id FROM {$wpdb->usermeta} WHERE meta_key='nickname' AND meta_value = %s", $query_vars['author_name'] ) );
        if ( $author_id ) {
            $query_vars['author'] = $author_id;
            unset( $query_vars['author_name'] );    
        }
    }
    return $query_vars;
}

দ্বিতীয় অংশটি author_linkফিল্টারটিতে হুকিং দিয়ে এবং স্ট্যান্ডার্ড লেখকের অংশ (দ্বারা নির্দেশিত $author_nicename) ডাকনামের সাথে প্রতিস্থাপনের মাধ্যমে সম্পন্ন হয় ।

add_filter( 'author_link', 'wpse5742_author_link', 10, 3 );
function wpse5742_author_link( $link, $author_id, $author_nicename )
{
    $author_nickname = get_user_meta( $author_id, 'nickname', true );
    if ( $author_nickname ) {
        $link = str_replace( $author_nicename, $author_nickname, $link );
    }
    return $link;
}

লেখকের ইউআরএল গঠনে ডেটা পরিবর্তন করা

সম্ভবত একটি সহজ উপায় হ'ল user_nicenameডেটাবেজে অপ্রয়োজনীয় ক্ষেত্রটি আপডেট করা update আমি মনে করি এটি ব্যবহারকারীর লগইন থেকে উত্পন্ন এবং এর পরে আর কখনও পরিবর্তন হয়নি। তবে আমি ব্যবহারকারী পরিচালনায় বিশেষজ্ঞ নই, তাই এটি নিজের ঝুঁকিতে ব্যবহার করুন use

add_action( 'user_profile_update_errors', 'wpse5742_set_user_nicename_to_nickname', 10, 3 );
function wpse5742_set_user_nicename_to_nickname( &$errors, $update, &$user )
{
    if ( ! empty( $user->nickname ) ) {
        $user->user_nicename = sanitize_title( $user->nickname, $user->display_name );
    }
}

সুন্দর সমাধান। আমি এখনও এটি পরীক্ষা করে দেখিনি, তবে আমি মনে করি আপনার পন্থাটি খুব ভাল।
আনহ ট্রান

সদৃশ লেখকের উপনাম সম্পর্কে কী? আমাদের কি এটি নিয়ে চিন্তিত হওয়া দরকার, বা ডব্লিউপি কি এটি যত্ন করে?
ড্রু বেকার

@ ড্র্রুব্যাকার যেমন বলেছিলেন, দু'জন ব্যবহারকারীর প্রোফাইলে একইরকম নাম থাকলে নকল ইউআরএল নিয়ে একটি সমস্যা হতে পারে। বলুন যে কোনও ব্যবহারকারীর 1 জন হিসাবে তার ব্যবহারকারীর নাম জন হিসাবে সম্পাদনা করেছে এবং একই নামের সাথে অন্য একজন ব্যবহারকারী রয়েছেন, উভয় ব্যবহারকারীর প্রোফাইলে সাইট.com/author/john হিসাবে একক লেখক url রয়েছে। এর জন্য কোনও ঠিক আছে কিনা আপনি আমাকে বলতে পারেন?
নেটিজেন

এছাড়াও নামের মধ্যে কোনও স্থান থাকলে, URL টি কাজ করবে না। এই কোডটি দিয়ে তৈরি এলোমেলো ব্যবহারকারীর নামগুলির সাথে এটি ঘটে। আমি যখন শেষের দিকে কোডটি চেষ্টা করেছি তখন এটি নতুন ব্যবহারকারী 654937 এর মতো এলোমেলো ব্যবহারকারীর নাম উত্পন্ন করে এবং লেখক ইউআরএল সাইট.com/author/Newuser654937/ এর মতো দেখায়। আমরা আবার প্রোফাইলের নাম পরিবর্তন না করে এবং স্পেসগুলি সরিয়ে না দেওয়া পর্যন্ত এই URL টি কাজ করবে না work আপনি কি এর সাথে সমাধানের পরামর্শ দিতে পারেন?
নেটিজেন

@ আইএমএসজে: সদৃশ নাম, বা অবৈধ অক্ষরের বিরুদ্ধে কোনও স্বয়ংক্রিয় প্রতিরোধ নেই। আপনার নিজের এটি সরবরাহ করতে হবে। সম্ভবত "সবচেয়ে সহজে" যদি আপনি এটি "দ্বিতীয় নাম" পরিবর্তন করে দ্বিতীয় উপায়ে করেন।
জান ফ্যাব্রি

1

এই প্লাগইনটি ব্যবহার করুন: http://wordpress.org/extend/plugins/display-name-author-permalink/

যদিও এটি ৩.২.১-এর জন্য পরীক্ষা করা হয়নি। আমি কোনও সমস্যা ছাড়াই এটি ব্যবহার করে আসছি।

প্লাগইনটি সক্রিয় করার সময় আপনি যদি শিরোনাম ত্রুটিটি পান তবে আপনি এখানে একটি সমাধান পেয়ে যাবেন: http://wordpresscloaker.com/blog/how-to-fix-wordpress-plugin-does-not-have-a-uthor-header -error.html


-3

একটি সহজ উপায় হ'ল প্লাগইন লেখক স্লাগ

এছাড়াও আপনি ছোট কোড ব্যবহার করতে পারেন:

add_action('init', 'set_new_author_base');
function set_new_author_base() {
    global $wp_rewrite;
    $author_slug = 'new_slug';
    $wp_rewrite->author_base = $author_slug;
}

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