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í 15++ 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

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...

Core Web Vitals được đo lường như thế nào? Làm thế nào để bạn biết các bản sửa lỗi đã...

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. Website kinhvietnhathailong.vn là một trong những trang web về các sản phẩm về kính. Bao gồm vách kính cường lực,...
    5 giây trước
  2. 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...
    4 giây trước
  3. Nội dung SEO là nền tảng của SEO. Bạn có suy nghĩ gì khi đọc câu trên? Thực tế bạn...
    27 giây trước
  4. Nội dung trùng lặp trên website thường gặp là video, hình ảnh, văn bản,…xuất hiện từ 2 lần trở lên...
    23 giây trước
  5. Phần mềm chỉnh sửa Video miễn phí cho Youtube đang được giới trẻ ngày càng quan tâm, đặc biệt là...
    16 giây trước
  6. Thiết kế Website bán hàng chuẩn SEO là gì? Có khó không? Nắm ngay bí quyết Thiết kế website bán hàng...
    17 giây trước
  7. Là một người làm về SEO, một trong những cách tốt nhất để làm việc chính là tìm kiếm các kỹ thuật...
    13 giây trước
  8. Nghiên cứu từ khóa là một khái niệm đã có từ lâu và đây là một công việc khá tốn...
    1 giây trước
  9. Tối ưu hóa công cụ tìm kiếm được xem như là cách thức marketing online hiệu quả nhất hiện nay....
    22 giây trước
  10. Tạo một trang web tuyệt đẹp chỉ là bước đầu tiên để bắt đầu kinh doanh trực tuyến. Để có thể...
    23 giây trước