it-swarm.asia

هل من الممكن الحصول على رابط الصفحة من سبيكة لها؟

هل من الممكن الحصول على الرابط الثابت للصفحة من سبيكة وحدها؟ أدرك أنه يمكنك الحصول على الرابط الثابت للصفحة من المعرف باستخدام get_page_link():

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

أشعر بالفضول إذا كان هناك أي طريقة للقيام بالشيء نفسه باستخدام سبيكة الصفحة - مثل هذا:

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

أنت تتحدث عن الصفحات الصحيحة؟ ليس المشاركات.

هل هذا ما تبحث عنه:

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

أعتقد أن هذا يمكن أن يكون أفضل:

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

9
Matheus Eduardo

هذه هي الطريقة التي نشرها توم مكفارلين على مدونته :

/**
 * 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).

6
shea

الإجابة المقبولة خاطئة لأن الصفحات الهرمية لا تعمل بهذه الطريقة. ببساطة ، فإن الدودة لا تكون دائمًا مسار الصفحة أو النشر. مثلا تحتوي صفحتك على طفل وما إلى ذلك. المسار سيكون 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>
2
Toskan

جرب هذا:

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

get_page_by_path( 'path' ) تقوم بإرجاع كائن الصفحة/المنشور والذي يمكن استخدامه بعد ذلك بواسطة get_page_link() لأنه يقبل كائن post/page ويعيد الرابط الثابت.

1
Sigma Wadbude
    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
0
user46487