এর স্লাগ থেকে কোনও পৃষ্ঠা লিঙ্ক পাওয়া সম্ভব?


113

একা স্লাগ থেকে কোনও পৃষ্ঠার পারমিলিংক পাওয়া সম্ভব? আমি সচেতন যে আপনি আইডিটি ব্যবহার করে পৃষ্ঠার পার্মালিঙ্কটি পেতে পারেন get_page_link():

<a href="<?php echo get_page_link(40); ?>">Map</a>

পৃষ্ঠার স্লাগের সাথে যদি একইভাবে করার কোনও উপায় থাকে তবে আমি আগ্রহী - এটির মতো:

<a href="<?php echo get_page_link('map'); ?>">Map</a>

উত্তর:


183

আপনি ঠিক পৃষ্ঠা সম্পর্কে কথা বলছেন? পোস্ট নয়

এটি কি আপনি খুঁজছেন:

  1. get_permalink( get_page_by_path( 'map' ) )
  2. get_permalink( get_page_by_title( 'Map' ) )
  3. home_url( '/map/' )

4
মানে get_permalink(get_page_by_path('contact')->ID));?
স্যাম্পসন

1
হুম নাহ? আইডি দিয়ে কি আছে?
zeo

3
get_page_by_path()সমস্ত পৃষ্ঠার তথ্যের একটি অ্যারে প্রদান করে। get_permalink()প্রথম যুক্তি হিসাবে একটি পৃষ্ঠা আইডি নেয় takes আমি ভেবেছিলাম আমাকে স্পষ্টভাবে আইডি মানটি পাস করতে হবে।
সাম্পসন

10
@ জোনাথন: এটি সর্বদা নথিভুক্ত হয় না, তবে অনেক ডাব্লুপি ফাংশনই সংখ্যার আইডি এবং সম্পূর্ণ পোস্ট উভয় জিনিসই যুক্তি হিসাবে গ্রহণ করে।
জান ফ্যাব্রি

1
দেখে মনে হচ্ছে শিশু পৃষ্ঠাগুলি নিয়ে কাজ করার সময় get_page_by_path () ব্যবহার করা বেশ জটিল হতে পারে ...
কাভিয়ার

9

আমি মনে করি এটি আরও ভাল হতে পারে:

function get_page_by_slug($page_slug, $output = OBJECT, $post_type = 'page' ) {
    global $wpdb;
    $page = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_name = %s AND post_type= %s", $page_slug, $post_type ) );
    if ( $page )
            return get_page($page, $output);
    return null;
}

"আসল" এর প্যাটার্ন নিম্নলিখিত get_page_by_titleওয়ার্ডপ্রেসের । (লাইন 3173)

rgds


11
কেন ভাল হবে? তুমি কি ব্যাখ্যা করতে পারো?
জুলিয়েন_সি

শেষ মন্তব্য - আমি মনে করি যে function get_page_by_slug($page_slug, $output = OBJECT, $post_type = 'page' ) { global $wpdb; $page = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_name = %s AND post_type= %s AND post_status = 'publish'", $page_slug, $post_type ) ); if ( $page ) return get_page($page, $output); return null; }

কেন? এটি কেবল আইডি পেতে কোনও সম্পূর্ণ পোস্ট অবজেক্ট তৈরি করে না।
s_ha_dum

@ ওয়েবেসিট্রন আমার মনে হয় কেবলমাত্র 'স্লাগ' এর জন্য পরিবর্তিত হয়ে 'শিরোনাম' দ্বারা ওয়ার্ডপ্রেস পোস্ট পাওয়ার মূল প্যাটার্ন অনুসরণ করা হচ্ছে। ( লিঙ্কটি দেখুন )
ম্যাথিউস এডুয়ার্ডো

এটি একটি ভাল উত্তর। এটি আপনার পৃষ্ঠাকে মাস্কিং করা বা ভুলভাবে ফিল্টার করার জন্য দুর্বৃত্ত প্লাগইনটির সম্ভাব্যতাটিকে বাইপাস করে। আপনি যদি পোস্ট টেবিল থেকে আইডিটি ফিরিয়ে দেন, তবে আপনি \WP_Postএটি থেকে একটি উদাহরণ তৈরি করতে পারেন এবং এটি অন্যান্য ওয়ার্ডপ্রেস ফাংশনগুলির মধ্যে সরাসরি সমাধান হয় যা অন্যান্য মানগুলি পরীক্ষা করে। \WP_Postপোস্ট সম্পর্কিত সর্বাধিক সম্পর্কিত ডেটা সন্ধান করার জন্যও সরাসরি পদ্ধতি সরবরাহ করে।
মোপসিড

6

এটি টম ম্যাকফারলিন তাঁর ব্লগে প্রকাশিত একটি পদ্ধতি :

/**
 * Returns the permalink for a page based on the incoming slug.
 *
 * @param   string  $slug   The slug of the page to which we're going to link.
 * @return  string          The permalink of the page
 * @since   1.0
 */
function wpse_4999_get_permalink_by_slug( $slug, $post_type = '' ) {

    // Initialize the permalink value
    $permalink = null;

    // Build the arguments for WP_Query
    $args = array(
        'name'          => $slug,
        'max_num_posts' => 1
    );

    // If the optional argument is set, add it to the arguments array
    if( '' != $post_type ) {
        $args = array_merge( $args, array( 'post_type' => $post_type ) );
    }

    // Run the query (and reset it)
    $query = new WP_Query( $args );
    if( $query->have_posts() ) {
        $query->the_post();
        $permalink = get_permalink( get_the_ID() );
        wp_reset_postdata();
    }
    return $permalink;
}

এটি কাস্টম পোস্ট ধরণের এবং অন্তর্নির্মিত পোস্ট ধরণের (যেমন postএবং page) এর সাথে কাজ করে।


2

গৃহীত উত্তরটি ভুল কারণ শ্রেণিবদ্ধ পৃষ্ঠাগুলি এর মতো কাজ করে না। সহজ কথায় বলতে গেলে, স্লাগ সর্বদা পৃষ্ঠা বা পোস্টের পথ নয়। যেমন আপনার পৃষ্ঠার ইত্যাদির শিশু আছে পথ হতে হবে parent-slug/child-slugএবং get_page_by_pathএটি ব্যর্থ হবে child-slugএই ভাবে। সঠিক সমাধানটি হ'ল:

function mycoolprefix_post_by_slug($the_slug, $post_type = "page"){
 $args = array(
   'name'        => $the_slug,
   'post_type'   => $post_type,
   'post_status' => 'publish',
   'numberposts' => 1
 );
 $my_page = get_posts($args)[0];
 return $my_page;
}

<a href="<?php echo mycoolprefix_post_by_slug('map'); ?>">Map</a>

1

এটা চেষ্টা কর:

<a href="<?php echo get_page_link( get_page_by_path( 'map' ) ); ?>">Map</a>

get_page_by_path( 'path' )পৃষ্ঠা / পোস্ট অবজেক্ট প্রত্যাবর্তন করে যা get_page_link()পোস্ট / পেজ অবজেক্ট গ্রহণ করে এবং পারমিলিংক ফেরত দেওয়ার পরে এটি ব্যবহার করা যেতে পারে ।


2
দয়া করে আপনার উত্তর সম্পাদনা করুন , এবং একটি ব্যাখ্যা যুক্ত করুন: কেন এটি সমস্যার সমাধান করতে পারে?
ফুসিয়া

0
    function theme_get_permalink_by_title( $title ) {

    // Initialize the permalink value
    $permalink = null;

    // Try to get the page by the incoming title
    $page = get_page_by_title( strtolower( $title ) );

    // If the page exists, then let's get its permalink
    if( null != $page ) {
        $permalink = get_permalink( $page->ID );
    } // end if

    return $permalink;

} // end theme_get_permalink_by_title

দ্বারা এই ফাংশন ব্যবহার করুন

if( null == theme_get_permalink_by_title( 'Register For This Site' ) ) {
  // The permalink doesn't exist, so handle this however you best see fit.
} else {
  // The page exists, so do what you need to do.
} // end if/else
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.