給WordPress自定義文章類型添加短鏈接

WordPress內置瞭一種文章短鏈接,型如 www.yoursite.com?p=1 (其中 1 為文章的ID),你可以在後臺發佈文章的時候查看到:

wp_get_shortlink-wpdaxue_com

而自定義文章類型默認是生成短鏈接的,所以我們需要添加相應的函數。比如我們要給 book 這種自定義文章類型添加短鏈接功能,可以在你的外掛文件或者當前主題的 functions.php 添加類似下面的代碼:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/**
 * 給自定義文章類型“book”添加短鏈接
 */
function wpdaxue_shortlinks_for_book( $shortlink, $id, $context ) {
 
    // 上下文可以是一篇文章、附件、或查詢
    $post_id = 0;
 
    if ( 'query' == $context && is_singular( 'book' ) ) {
 
        // 如果上下文是查詢,使用get_queried_object_id 獲取ID
        $post_id = get_queried_object_id();
 
    }
    elseif ( 'post' == $context ) {
 
        // 如果上下文是文章,使用以傳遞的 $id
        $post_id = $id;
 
    }
 
    // 隻對 book這種自定義文章類型操作
    if ( 'book' == get_post_type( $post_id ) ) {
        $shortlink = home_url( '?p=' . $post_id );
    }
 
    return $shortlink;
}
add_filter( 'pre_get_shortlink', 'wpdaxue_shortlinks_for_book', 10, 3 );

/**
* 給自定義文章類型“book”添加短鏈接
*/
function wpdaxue_shortlinks_for_book( $shortlink, $id, $context ) {
// 上下文可以是一篇文章、附件、或查詢
$post_id = 0;
if ( ‘query’ == $context && is_singular( ‘book’ ) ) {
// 如果上下文是查詢,使用get_queried_object_id 獲取ID
$post_id = get_queried_object_id();
}
elseif ( ‘post’ == $context ) {
// 如果上下文是文章,使用以傳遞的 $id
$post_id = $id;
}
// 隻對 book這種自定義文章類型操作
if ( ‘book’ == get_post_type( $post_id ) ) {
$shortlink = home_url( ‘?p=’ . $post_id );
}
return $shortlink;
}
add_filter( ‘pre_get_shortlink’, ‘wpdaxue_shortlinks_for_book’, 10, 3 );

然後在循環中使用 wp_get_shortlink() 函數獲取短鏈接:

1
<?php echo wp_get_shortlink(); ?>

<?php echo wp_get_shortlink(); ?>

註:本文的用途不是給後臺自定義文章類型發佈時添加“獲取短鏈接地址”的功能,而是讓自定義文章類型生成短鏈接,然後可以在需要顯示的地方輸出。

參考資料:http://wp.tutsplus.com/articles/tips-articles/quick-tip-add-shortlinks-to-custom-post-types/

發佈留言