Bootstrap

Vũ Thành Lâm

Content - Code - SEO - MMO
17/10/1979
Tây Mỗ - Nam Từ Liêm - Hà Nội
thanhlam19792003

Lamvt – Vũ Thành Lâm – bắt đầu Code 2005 Freelancer từ 2006 với hàng ngàn dự án lớn nhỏ cho nước ngoài và hàng trăm dự án web cho Việt Nam.

SEO thành công rất nhiều dự án lớn, độ khó cao.
MOD (Moderator) và Admin (Administraror) của nhiều diễn đàn về SEO và CODE web MMO tại Việt Nam
Dạy Lập trình Thiết kế Web và SEO Miễn phí 17++ Năm (Từ 2006 đến Nay)

Liệu có thể lấy page link từ slug của nó không?

5/5 - (1 bình chọn)

Câu hỏi:

Liệu có thể lấy permalink của trang từ slug? Tôi biết rằng permalink của trang có thể lấy được từ ID bằng cách sử dụng get_page_link():

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

Tôi tò mò không biết liệu có làm được điều tương tự với slug của một trang hay không – Giống như cái này:

<a href=”<?php echo get_page_link(‘map’); ?>”>Map</a>

Sampson

Liệu có thể lấy page link từ slug của nó không? lieu-co-the-lay-page-link-tu-slug-cua-no-khong

Câu trả lời chính xác nhất

Bạn đang nói về các pages đúng không? Chứ không phải Posts?

Đây có phải là cái bạn đang muốn tìm:

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

Câu trả lời của zeo

Ý bạn là get_permalink(get_page_by_path(‘contact’)-> ID));? – Sampson
hmmm không? ID trong code của bạn có ý nghĩa gì? – zeo
get_page_by_path () trả về một mảng tất cả các thông tin trang (page information). get_permalink () lấy một page ID làm đối số đầu tiên. Tôi nghĩ tôi phải chuyển giá trị ID một cách rõ ràng. – Sampson
@ Jonathan: Nó không phải lúc nào cũng được ghi lại, nhưng nhiều hàm WP chấp nhận cả dạng số của ID và toàn bộ post objects như là các đối số. – Jan Fabry
Có vẻ như get_page_by_path () khá phức tạp khi sử dụng để xử lý các trang con.         – Kaaviar 
Tôi đồng ý với Kaaviar, hàm ở phía dưới trông tốt hơn. – Rezen
Tôi có sử dụng hàm số 1 cho các trang con của tôi mà không có vấn đề gì. Tôi thực sự không thấy nó phức tạp. – Jeremy
home_url (‘/ map /’) Tôi thấy cái này hoạt động rất tốt – shady sherif
Đây là một câu trả lời sai, xin hãy downvote. Đường dẫn không giống slug. Ví dụ: một trang có trang mẹ được gọi là abc, bản thân trang đó có một slug 123. Đường dẫn bây giờ là abc/123 slug là 123. Vui lòng xóa câu trả lời sai này. get_page_by_path ( ‘123’ ) sẽ không hoạt động. – Toskan


Tôi nghĩ cái này sẽ tốt hơn:

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

Hãy xem mẫu của bản gốc get_page_by_title của WordPress. (dòng 3173)

Câu trả lời của Matheus Eduardo

Tại sao cái này lại tốt hơn? Bạn có thể giải thích được không? – julien_c
Bình luận cuối cùng – Tôi nghĩ rằng sql cần phải có thêm một điều kiện: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; } – user25790
Tại sao? Nó không tạo ra một đối tượng bài viết hoàn chỉnh chỉ để lấy ID. – s_ha_dum
@webcitron Tôi nghĩ rằng nó chỉ giống như mẫu gốc của WordPress, lấy post bởi ‘title’, và chỉ cần thay đổi cho ‘slug’. (hãy xem trong link) – Matheus Eduardo
Đây là một câu trả lời hay. Điều này bỏ qua khả năng của một plugin giả mạo che giấu trang của bạn hoặc lọc không chính xác. Nếu bạn trả về id từ bảng bài đăng (post table), thì bạn có thể tạo một ví dụ của \ WP_Post từ đó, và nó giải quyết trực tiếp trong tất cả các hàm WordPress dùng để kiểm tra các giá trị khác. \ WP_Post cũng cung cấp các phương thức trực tiếp để tìm dữ liệu liên quan nhất về bài đăng. – mopsyd


Đây là một phương pháp được published bởi Tom McFarlin trên blog của anh ấy:

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

Nó hoạt động tốt đối với custom post types và built-in post types (loại bài đăng dựng sẵn) (như post và page).

Câu trả lời của shea


Câu trả lời đã được chấp nhận là sai bởi vì các trang phân cấp (hierarchical pages) không hoạt động như thế. Nói một cách đơn giản, slug không phải lúc nào cũng là đường dẫn của trang hoặc bài đăng. Ví dụ: trang của bạn có một trang con, đường dẫn sẽ là parent-slug/child-slug và get_page_by_path sẽ không tìm được child-slug theo cách này. Giải pháp thích hợp là:

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>

Câu trả lời của Toskan


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

Dùng hàm này bằng cách

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

Câu trả lời của user46487


Hãy thử cái này:

<a href=”<?php echo get_page_link( get_page_by_path( ‘map’ ) ); ?>”>Map</a>
get_page_by_path( ‘path’ ) trả về đối tượng page/post, sau đó nó có thể được sử dụng bởi get_page_link(). Bởi vì nó chấp nhận cả đối tượng post và page rồi trả về permalink.

Câu trả lời của Sigma Wadbude

Hãy chỉnh sửa câu trả lời của bạn và thêm vào một lời giải thích: Tại sao cái đó lại có thể giải quyết được vấn đề? – fuxia

Tin mới nhất

Dù bạn dùng phiên bản WordPress với lưu lượng truy cập cao hay một blog nhỏ trên máy chủ chia...

VR PLUS (https://vrplus.vn/ ) Là một trong những dự án do Lamvt thực hiện trong thời gian gần đây. Như...

Trong một năm qua, chúng tôi đã xuất bản khoảng 79 bài viết SEO trên blog Ahrefs. Các bài viết...

Khám phá kĩ thuật viết nội dung SEO Nếu không có SEO, nội dung của bạn có thể bị chìm...

Các website về lĩnh vực làm đẹp cần phải có một thiết kế (design) hấp dẫn và bắt mắt. Điều...

Tin được yêu thích

Như đã nói, phần mềm chỉnh sửa video đang ngày càng chứng tỏ được tầm quan trọng của mình, nhất...

Nhiều bạn thắc mắc là sau khi cài đặt Plugin cho Google AMP thì làm thế nào để kiểm tra,...

Các trang web giáo dục và các trang web của chính phủ có một lợi thế hơn trong bảng xếp...

Nội dung là một trong 3 tiêu chí quan trọng để google đánh giá thứ hạng tìm kiếm cho website...

Thẻ <span> </span> Thẻ <span> là thẻ khá đặc biệt trong HTML, theo mặc định thì thẻ <span> được thêm...

Khách đang xem

  1. Nếu bạn là một SEOer, hãy cập nhật ngay TOP 10 xu hướng SEO đỉnh nhất 2020 đưa website của...
    18 giây trước
  2. Việc SEOer không biết CODE và Coder không biết SEO ở Việt Nam là rất phổ biến, vì thực ra...
    16 giây trước
  3. Chúng ta cùng nhau nhớ lại thời Internet mới phát triển, trên các website thường có một nút nổi bật...
    1 giây trước
  4. Tiêu đề là một trong những yếu tố quan trọng không thể trong một bài viết chuẩn SEO. Chính vì...
    4 giây trước
  5. Bất kể ai đang sử dụng nền tảng WordPress cho blog hoặc trang web của họ thì đều đã sử...
    23 giây trước
  6. Maggie Cassella là một người Mỹ - Canada nữ diễn viên, diễn viên hài và nhà văn, nổi tiếng nhất...
    10 giây trước
  7. Bạn đang cảm thấy áp lực trong công việc? Ngày qua ngày những áp lực đó đang làm bạn cảm...
    21 giây trước
  8. Bạn có lo lắng về việc viết bản sao trang đích chuyển đổi không? Việc có trang đích hoạt động...
    29 giây trước
  9. Mục đích kiếm tiền luôn là chủ đề xuất hiện đầu tiên khi bạn viết blog với hàng loạt các...
    26 giây trước
  10. Sức mạnh của việc nghiên cứu từ khóa, tối ưu hóa công cụ tìm kiếm (SEO) là không thể chối...
    19 giây trước