Các liên kết tiêu đề trang web có điều kiện trong Genesis

Trong nhóm Genesis Facebook, một người dùng hỏi:

Xin chào tất cả – Tôi đang sửa đổi một chủ đề con mẫu genesis. Tôi đang tìm cách sửa đổi URL tiêu đề trang web để tùy thuộc vào hình ảnh tiêu đề được hiển thị phụ thuộc vào URL nào được liên kết với hình ảnh tiêu đề đó. Tôi đang sử dụng plugin WP Display Header cho phép tôi xác định hình ảnh tiêu đề nào được hiển thị trên một trang, nhưng điều đó không thay đổi URL cơ bản của trang web. Lý do cho điều này là tôi có một khu vực trang web sẽ bị hạn chế và tôi muốn nó nếu tiêu đề đặc biệt cho khu vực bị hạn chế đó sẽ chuyển đến trang trung tâm của khu vực đó, thay vì trang chủ không bị hạn chế, nếu điều đó hợp lý. Tôi đã tìm thấy một số mã PHP có thể thực hiện thủ thuật này, nhưng tôi không muốn thay đổi URL của trang web trên toàn cầu, chỉ trên cơ sở mỗi trang.

Chúng tôi có thể tạo trường tùy chỉnh loại URL bằng cách sử dụng plugin Custom Field Suite, đặt trường này xuất hiện khi chỉnh sửa Trang và khi URL tùy chỉnh đã được nhập, hãy liên kết phần tử tiêu đề trang web (.site-title a) của Trang cụ thể đó với URL được chỉ định bằng cách sử dụng genesis_seo_title móc bộ lọc trong Genesis.

Các trang mà không có URL tiêu đề trang web tùy chỉnh nào được đặt và các trang khác của trang web sẽ tiếp tục liên kết tiêu đề trang web với tên mặc định của nó, liên kết cố định của trang web.

Bước 1

Cài đặt và kích hoạt Custom Field Suite.

Bước 2

Đi tới Tất cả các nhóm trường và tạo một nhóm trường tùy chỉnh có một trường (đặt kiểu trả về tức là Định dạng đầu ra thành mảng PHP).Site Title Link

Bước 3

Chỉnh sửa (các) Trang của bạn và nhập các URL tùy chỉnh của bạn cho tiêu đề trang web.

Bước 4

Thêm phần sau vào functions.php của chủ đề con :

add_filter( 'genesis_seo_title', 'custom_site_title_link', 10, 3 );
/**
 * Set Site Title hyperlink to that of `site_title_link` custom field on Pages.
 * @param  string $title  Existing page title.
 * @param  string $inside Markup inside the title.
 * @param  string $wrap   Wrapping element for the title.
 * @return string         Existing / Modified title.
 */
function custom_site_title_link( $title, $inside, $wrap ) {
    // if this is not a static Page, abort.
    if ( ! is_page() ) {
        return $title;
    }

    // get the array of input values for `site_title_link` custom field.
    $link = CFS()->get( 'site_title_link' );

    // if a custom Site Title Link has been set for this Page, set the site title link to it.
    if ( $link['url'] ) {
        $inside = sprintf( '<a href="%s">%s</a>', $link['url'], get_bloginfo( 'name' ) );

        // Build the title.
        $title = genesis_markup( array(
            'open'    => sprintf( "<{$wrap} %s>", genesis_attr( 'site-title' ) ),
            'close'   => "</{$wrap}>",
            'content' => $inside,
            'context' => 'site-title',
            'echo'    => false,
            'params'  => array(
                'wrap' => $wrap,
            ),
        ) );
    }

    // return the current title or title with modified hyperlink.
    return $title;
}