Genesis version 2.6 new

Genesis 2.6 đang được nhóm StudioPress tích cực phát triển với sự đóng góp của các tình nguyện viên như Gary Jones, Lee Anthony và một số người khác.

Hôm nay, họ đã thông báo về tính khả dụng của bản beta 2.6 tại đây: https://studiopress.blog/genesis-2-6-beta/

Phần ‘Đã thêm’ của nhật ký thay đổi có nội dung:

  • Thêm bộ lọc theo ngữ cảnh cho nội dung được chuyển qua API đánh dấu.
  • Thêm bộ lọc cho tiêu đề trang 404.

Tôi đã cài đặt bản beta để cung cấp cho nó một vòng quay và muốn chia sẻ hiểu biết của tôi về những điều trên.

genesis / lib / chức năng / markup.php thêm

/**
 * Contextual filter to modify 'content'.
 *
 * @since 2.6.0
 *
 * @param string $content Content being passed through Markup API.
 * @param array  $args  Array with markup arguments.
 *
 * @see genesis_markup $args Array.
 */
$content = apply_filters( "genesis_markup_{$args['context']}_content", $args['content'], $args );

“Nội dung” ở đây không đề cập đến phần tử hoặc nội dung mục nhập mà là nội dung thực tế của phần tử HTML sử dụng API đánh dấu.main.content

Ví dụ, hãy xem bên trong 404.php .

Tính đến ngày hôm nay, nó đã

genesis_markup( array(
    'open'    => '<h1 %s>',
    'close'   => '</h1>',
    'content' => __( 'Not found, error 404', 'genesis' ),
    'context' => 'entry-title',
) );

Rất có thể nó sẽ được cập nhật lên

genesis_markup( array(
    'open'    => '<h1 %s>',
    'close'   => '</h1>',
    'content' => apply_filters( 'genesis_404_entry_title', __( 'Not found, error 404', 'genesis' ) ),
    'context' => 'entry-title',
) );

để đảm bảo khả năng tương thích ngược với những thứ có thể đang sử dụng genesis_404_entry_title bộ lọc tĩnh khi 2.6 là cuối cùng.

genesis_markup() hàm đang được gọi và đang được truyền vào một mảng trong đó có một trong các khóa content .

Giả sử mục tiêu là thay đổi tiêu đề mặc định của trang 404 từ “Không tìm thấy, lỗi 404” thành một cái gì đó thân thiện hơn như “Rất tiếc! Trang này không tồn tại.”.

Chúng tôi có thể sử dụng móc bộ lọc theo ngữ cảnh động mới cho điều này như sau:genesis_markup_{$args['context']}_content

add_filter( 'genesis_markup_entry-title_content', 'custom_change_404_title' );
/**
 * Change the title of 404 pages.
 *
 * @param  string $title Current title.
 * @return string Modified title.
 */
function custom_change_404_title( $title ) {
    if ( is_404() ) {
        $title = __( 'Oops! This page does not exist.', 'my-theme-text-domain' );
    }

    return $title;
}

Trong context trường hợp này có thể thấy trong lệnh gọi tới .entry-title genesis_markup()

Nhưng vì nó là chung và cũng được sử dụng ở những nơi khác nên chúng ta cần sử dụng if có điều kiện để kiểm tra xem chúng ta có đang xử lý các trang lỗi 404 của WordPress hay không.

Không cần truyền tham số tùy chọn thứ hai $args vì chúng ta không cần dữ liệu đó.

Nếu bạn thuộc tuýp người tò mò như tôi, thì bây giờ bạn cũng sẽ xem qua các phần khác của markup.php.

Đây là đoạn mã mẫu để thay đổi đánh dấu tiêu đề của trang lỗi 404 từ h1 thành h2 (đừng hỏi tôi tại sao mọi người lại muốn làm điều đó. Tôi chỉ quan tâm đến tính kỹ thuật):

add_filter( 'genesis_markup_entry-title_open', 'custom_change_open_tag' );
/**
 * Change h1 opening tag to h2.
 *
 * @param  string $open HTML tag being processed by the API.
 * @return string       Modified HTML tag.
 */
function custom_change_open_tag( $open ) {
    if ( is_404() ) {
        $open = str_replace( '<h1', '<h2', $open );
    }

    return $open;
}

add_filter( 'genesis_markup_entry-title_close', 'custom_change_close_tag' );
/**
 * Change h1 closing tag to h2.
 *
 * @return string       Modified HTML tag.
 */
function custom_change_close_tag() {
    if ( is_404() ) {
        $close = '</h2>';
    }

    return $close;
}

Mẹo cuối cùng:

Đây là đầu ra HTML mặc định của tiêu đề trang 404:

<h1 class="entry-title" itemprop="headline">Not found, error 404</h1>

Tự hỏi nguồn gốc từ đâu?class="entry-title"