Làm cách nào để thêm mã vào Header.php trong một chủ đề con?


18

Tôi đang tạo một chủ đề con lần đầu tiên và tôi có một vài câu hỏi liên quan đến mã được thêm vào tiêu đề.

Trong một chủ đề không phải con, có một số mã nhất định tôi thêm vào tệp tiêu đề của mình như phân tích google, công cụ quản trị trang web google, mua quảng cáo bán, biểu đồ mở Facebook, v.v ....

Làm thế nào để bạn làm điều này trong một chủ đề trẻ em? Bạn có tạo một tệp header.php trong chủ đề con của bạn không? Nếu vậy, làm thế nào hoàn thành cái này? Có giống với @import như tôi đã sử dụng trên css không?

Cảm ơn.

Câu trả lời:


24

Tôi sẽ móc vào wp_headhành động. Tôi sẽ đặt nó trong một plugin để trừu tượng hóa nó từ lớp trình bày của bạn. Điều này cho phép khả năng mở rộng và thay đổi chủ đề. Điều này cũng ngăn chặn mọi thiệt hại về tài sản thế chấp nếu một bước bị bỏ lỡ trong quá trình di chuyển từ chủ đề này sang chủ đề tiếp theo.

add_action('wp_head', 'wpse_43672_wp_head');
function wpse_43672_wp_head(){
    //Close PHP tags 
    ?>
    ADD YOUR PLAIN HTML CODE HERE
    <?php //Open PHP tags
}

Cảm ơn. Tôi không có bất kỳ kinh nghiệm nào trong việc tạo ra một trình cắm. Tôi có khoảng 5 đoạn mã tôi muốn thêm vào tiêu đề. Tôi có cần phải cắm điện cho mỗi người không?
Rick Smith

@RickSmith Tôi đã thêm định dạng plugin vào bài đăng ở trên
Brian Fegter

4
Cho dù sử dụng Chủ đề gốc, Chủ đề con hay bất kỳ Chủ đề nào, cách tiếp cận chính xác là đặt mã đó trong một cuộc gọi lại, được nối vào móc hành động thích hợp. Bạn có thể đặt mã này vào functions.phptệp của Chủ đề , hoặc, thậm chí tốt hơn và như Brian đã đề xuất, hãy đặt mã đó vào một Plugin dành riêng cho trang web .
Chip Bennett

1
@BrianFegter Cảm ơn bạn đã dành thời gian giúp tôi với điều này. Đây là một thùng dán, tôi nghĩ rằng tôi vẫn đang làm sai điều gì đó. :) pastebin.com/iT0bJjGE
Rick Smith


4

Để sửa đổi tiêu đề trong một chủ đề con, sao chép tiêu đề.php từ chủ đề gốc vào chủ đề con và sau đó sửa đổi nó. WordPress sẽ thấy rằng bạn có một tiêu đề.php trong chủ đề con của bạn và sử dụng nó thay vì tiêu đề chủ đề phụ.php.

Bất kỳ tệp mẫu nào bạn đặt trong chủ đề con sẽ được ưu tiên hơn cùng một tệp trong chủ đề gốc khi được WordPress gọi.

Bất cứ điều gì có trong thẻ nên được thực hiện bằng cách sử dụng một cái gì đó như hàm trong câu trả lời Brians. Nếu đó là chủ đề cụ thể, bạn có thể đặt nó vào một tệp có tên hàm.php trong thư mục chủ đề của mình mà không cần thêm bước nào.


Tom, cảm ơn. Vì vậy, nếu tôi cần cài đặt 5 đoạn mã khác nhau trong tiêu đề.php, tôi có thể tạo một plugin và cài đặt nó không? Tôi vẫn sẽ cần phải sao chép tệp header.php vào chủ đề con của mình chứ?
Rick Smith

Có, không có lý do để thực hiện 5 plugin
Tom J Nowell

@RickSmith Nếu bạn đang trừu tượng hóa một plugin, không có lý do gì để sao chép qua tiêu đề.php. :)
Brian Fegter

2
Vấn đề với giải pháp này là khi chủ đề được cập nhật, bạn sẽ bỏ lỡ các bản sửa lỗi trong tiêu đề.php được thực hiện bởi tác giả.
Gõ X

2

Cảm ơn Brian Fegter . Nếu câu trả lời này có ích, vui lòng đánh giá câu trả lời của Brian ngay tại đây.

Đây là một ví dụ đầy đủ chức năng về cách thêm mọi thứ vào "tiêu đề" bằng plugin riêng của nó. Trong trường hợp này, tôi đang thêm các thuộc tính của Facebook Open Graph cho các nút Chia sẻ và Thích.

Chỉ cần tạo một tệp PHP có tên được chỉ định trong "Tập lệnh Plugin" ở đầu mã mẫu, đặt nó vào một thư mục có cùng tên mà không có phần mở rộng, rõ ràng và sao chép thư mục này đến đích "/ wp-content / bổ sung".

Sau đó, trong "Wordpress", làm mới "Plugin" và bạn sẽ thấy plugin mới của mình được cài đặt. Chỉ cần Kích hoạt nó và các trang của bạn sẽ bắt đầu chứa siêu dữ liệu của Open Graph Facebook và Twitter.

nhập mô tả hình ảnh ở đây

RẤT QUAN TRỌNG: Tệp PHP phải được mã hóa bằng UTF-8 mà không có BOM và hoàn toàn không có ký tự nào ở cuối. Phải đảm bảo điều này.

<?php
/*
    Plugin Name: My Facebook Open Graph Protocol
    Plugin Script: my-facebook-open-graph-protocol.php
    Plugin URI: 
    Description: Add Facebook Open Graph Protocol to header
    Author: Diego Soto (Thanks to Brian Fegter)
    Donate Link: 
    License: GPL    
    Version: 0.1-alpha
    Author URI: /wordpress/43672/how-to-add-code-to-header-php-in-a-child-theme
    Text Domain: myfogp
    Domain Path: languages/
*/

/*  Copyright 2014 Diego Soto  (http://disientoconusted.blogspot.com.ar/)

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License, version 2, as
    published by the Free Software Foundation.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/

add_action('wp_head', 'wpse_43672_wp_head');

function wpse_43672_wp_head(){
    $title = get_the_title() ." &lsaquo; ". get_bloginfo( "name", "display" );

    $src = wp_get_attachment_image_src( get_post_thumbnail_id(get_the_ID()), array( 90,55 ), false, "" ); 

    $face_metad = get_post_meta(get_the_ID(), "metadescription", true);

    $twitter_metad = get_post_meta(get_the_ID(), "metadescription140", true);
    if (empty($twitter_metad)) 
        $twitter_metad = $face_metad;

    //Close PHP tags 
    ?>    
    <meta property="og:title" content="<?php echo esc_attr($title); ?>" />
    <meta property="og:image" content="<?php echo esc_attr($src[0]); ?>" />
    <meta property="og:url" content="<?php the_permalink(); ?>" />
    <meta property="og:description" content="<?php if (!empty($face_metad)) echo esc_attr($face_metad); else the_excerpt(); ?>" />

    <meta name="twitter:title" content="<?php echo esc_attr($title); ?>" />
    <meta name="twitter:image" content="<?php echo esc_attr($src[0]); ?>" />    
    <meta name="twitter:url" content="<?php the_permalink(); ?>" />
    <meta name="twitter:description" content="<?php if (!empty($twitter_metad)) echo esc_attr($twitter_metad); else the_excerpt(); ?>" />
    <?php //Open PHP tags
}
?>

Bất cứ ai quan tâm đến chức năng của plugin.

  • Tiêu đề sẽ là nối tên của trang hiện tại và tên trang web.

  • Nếu một trường tùy chỉnh được gọi là "siêu dữ liệu" tồn tại, plugin sẽ cố gắng lấy mô tả từ trường này. Nếu không, hãy lấy mô tả từ đoạn trích.

  • Là hình ảnh, plugin cố gắng sử dụng hình thu nhỏ của hình ảnh nổi bật trên trang.


2
Vui lòng sử dụng esc_attr()cho các nội dung thuộc tính HTML.
fuxia

Tôi đã sửa đổi để sử dụng esc_attr () như bạn đã nói với tôi. Cảm ơn bạn.
DiegoSoto
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.