পারমলিংকের পরে অতিরিক্ত পরামিতি যুক্ত করবেন?


17

আমি কীভাবে কোনও কাস্টম পোস্ট টাইপ ব্যবহার করছি, বিশেষত যদি পারমালিঙ্কের পরে অতিরিক্ত পরামিতি যুক্ত করতে পারি?

উদাহরণস্বরূপ, আসুন বলি পারমিলিংক http://mysite/album/record-nameছিল। আমি কীভাবে http://mysite/album/record-name/related404 আপ না পুনর্নির্দেশ করতে পারি?

ওয়ার্ডপ্রেস পোস্টটি উপস্থিত না থাকলে পোস্ট টেম্পলেট কল করবে বলে মনে হচ্ছে ... সুতরাং আমি কীভাবে এটি করব তা কিছুটা ক্ষতির মধ্যে পড়েছে।


1
আমি ঠিক বুঝতে পেরেছি যে আমি মাইসাইট / অ্যালবাম / রেকর্ড-নাম /? টাইপ = সম্পর্কিত করতে পারি তবে এটি আমার সমস্যাটি সমাধান করে না, কারণ আমি এটি একটি সুন্দর URL ফর্ম্যাটে চাই। আমি ভেবেছিলাম আমি সম্ভবত ওয়ার্ডপ্রেসকে ওভাররাইড করার জন্য এনগিনেক্সের পাশ দিয়ে আবার লিখতে পারি, তবে সম্ভব হলে আমি বরং ওয়ার্ডপ্রেসের মধ্যে এটি পরিচালনা করব।
relm

উত্তর:


18

বিশেষ অনুরোধগুলি পরিচালনা করতে আপনি আপনার ইউআরআইতে একটি শেষ পয়েন্ট যুক্ত করতে পারেন।

প্লাগইন হিসাবে এখানে একটি প্রাথমিক উদাহরণ। কি ঘটছে তা বুঝতে ক্রাইস্টোফার ডেভিসের দুর্দান্ত টিউটোরিয়ালটি পড়ুন ওয়ার্ডপ্রেস পুনরায় লেখার এপিআই-এর সম্পূর্ণ গাইড

<?php # -*- coding: utf-8 -*-
/**
 * Plugin Name: T5 Endpoint Example
 * Description: Adds a permalink endpoint to posts named <code>epex</code>
 */

add_action( 'init', 't5_add_epex' );

function t5_add_epex()
{
    add_rewrite_endpoint( 'epex', EP_PERMALINK );
}

add_action( 'template_redirect', 't5_render_epex' );

/**
 * Handle calls to the endpoint.
 */
function t5_render_epex()
{
    if ( ! is_singular() or ! get_query_var( 'epex' ) )
    {
        return;
    }

    // You will probably do something more productive.
    $post = get_queried_object();
    print '<pre>' . htmlspecialchars( print_r( $post, TRUE ) ) . '</pre>';
    exit;
}


add_filter( 'request', 't5_set_epex_var' );

/**
 * Make sure that 'get_query_var( 'epex' )' will not return just an empty string if it is set.
 *
 * @param  array $vars
 * @return array
 */
function t5_set_epex_var( $vars )
{
    isset( $vars['epex'] ) and $vars['epex'] = true;
    return $vars;
}

12

আপনি এটি পুনরায় লেখার এপিআই -এর অ্যাড_উরাইট_এন্ডপয়েন্ট সহ করতে পারেন :

add_action( 'init', 'wpse51444_endpoint' );
function wpse51444_endpoint(){
    add_rewrite_endpoint( 'related', EP_ALL );
}

add_filter( 'query_vars', 'wpse51444_query_vars' );
function wpse51444_query_vars( $query_vars ){
    // add related to the array of recognized query vars
    $query_vars[] = 'related';
    return $query_vars;
}

টেম্পলেটটিতে আপনি সনাক্ত করতে পারবেন যখন আপনার সম্পর্কিত ক্যোয়ারী ভার উপস্থিত থাকে:

if( array_key_exists( 'related' , $wp_query->query_vars ) ):
    // current request ends in related
endif;

Wpse51444 এর অর্থ কী? কোনও কিছুর সাথে সংঘর্ষ না হওয়ার বিষয়টি নিশ্চিত করার জন্য এটি কি কেবল দীর্ঘসূত্র?
হেক্সডাস

@ হেক্সডাস হ্যাঁ, wpse = wp স্ট্যাকেক্সচেঞ্জ, 51444 এই প্রশ্নের আইডি। আপনি এটি যে কোনও কিছুতে এটি পরিবর্তন করতে পারেন তবে আপনি যা জানতেন তা অনন্য হবে এমনটি ব্যবহার করা ভাল।
মিলো

1
ওহ, আপনাকে মিলিও
সাফ করার

@ হেক্সোডাস আমি এটি মোটেও রহস্যজনক পাইনি।
নাবিল কাদিমি

Permalink ফ্লাশ করতে ভুলবেন না ।
চার্লি ভাইলার্ড

2

ইউআরএল পোস্ট করার জন্য প্যারামিটার যুক্ত করতে (পার্মালিঙ্ক), আমি এটি ব্যবহার করি:

add_filter( 'post_type_link', 'append_query_string', 10, 2 );
function append_query_string( $url, $post ) 
{
    return $url.'?my_pid='.$post->ID;
}

আউটপুট:

http://yoursite.com/pagename?my_pid=12345678

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