当前位置: 首页>>WEB开发>>正文


是否有可能从它的slu get获得一个页面链接?

webfans WEB开发 , , , 去评论

问题描述

是否有可能从单独的slu get中获得页面的永久链接?我知道你可以使用get_page_link()从ID获取页面的永久链接:

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

我很好奇,如果有什么办法可以像网页那样做同样的事情 – 就像这样:

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

最佳解决办法

你说的是正确的页面?不是职位。

这是你在寻找什么:

  1. get_permalink( get_page_by_path( 'map' ) )

  2. get_permalink( get_page_by_title( 'Map' ) )

  3. home_url( '/map/' )

次佳解决办法

我认为这可能会更好:

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;
}

遵循wordpress的”original” get_page_by_title模式。 (3173行)

RGDS

第三种解决办法

这是Tom McFarlin发布的一种方法on his blog

/**
 * 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;
}

它适用于自定义帖子类型和内置帖子类型(如postpage)。

参考资料

本文由朵颐IT整理自网络, 文章地址: https://duoyit.com/article/1344.html,转载请务必附带本地址声明。