Tạo Giao diện người dùng Văn bản Bản quyền Chân trang trong trang Cài đặt Chủ đề của Genesis Framework

Hôm nay tôi nảy ra một câu hỏi. Tại sao chúng tôi không thể thay đổi văn bản bản quyền chân trang mặc định từ trang Cài đặt Chủ đề Genesis? Mỗi khi chúng tôi cài đặt plugin “Chỉnh sửa đơn giản” hoặc thêm một vài mã vào tệp functions.php theo cách thủ công. Vì vậy, tôi đã kiểm tra kỹ lưỡng tệp php Genesis Theme Settings và nhận được 2 bộ lọc (genesis_theme_settings_defaults, gd_genesis_settings_sanitization_filters) và một Hook (genesis_theme_settings_metaboxes). Sử dụng 3 chức năng này, tôi đã tạo Giao diện người dùng Bản quyền Chân trang này trong trang cài đặt Chủ đề Genesis.

Tôi đã thêm các mã sau vào tệp functions.php.

Thiết lập Giá trị Mặc định

Đầu tiên, tôi đang đặt văn bản bản quyền mặc định. Nếu sử dụng, hãy nhấp vào nút “Đặt lại cài đặt” thì giá trị này sẽ được lưu ở đó.

function gd_defaults_settings_fields( $default_settings ) {
$default_settings['copyright_text'] = sprintf( '[[footer_copyright before="%s "]] · [[footer_childtheme_link before="" after=" %s"]] [[footer_genesis_link url="http://www.studiopress.com/" before=""]] · [[footer_wordpress_link] · [[footer_loginout]]', __( 'Copyright', 'genesis' ), __( 'on', 'genesis' ) );
$default_settings['credits'] = __( 'Website Designed by <a href="https://genesisdeveloper.me" target="_blank">Genesis Developer</a>', 'genesis_developer' );
return $default_settings;
}
add_filter( 'genesis_theme_settings_defaults', 'gd_defaults_settings_fields' );

Vệ sinh đầu vào của người dùng

Một trong những tính năng chính của Genesis Framework là Lớp vệ sinh. Điều này ngăn trang web thả tập lệnh phần mềm độc hại vào cài đặt chủ đề của bạn. Theo mặc định, Genesis đang cung cấp bốn bộ lọc làm sạch: one_zero, safe_html, no_html và Requi_unfiltered_html. Trường hợp của tôi, tôi đang sử dụng bộ lọc “safe_html”.

function gd_genesis_settings_sanitization_filters() {
    genesis_add_option_filter( 
                                'safe_html', 
                                GENESIS_SETTINGS_FIELD,
                                array(
                                'copyright_text',
                                'credits'
                                ) );
}
add_action( 'genesis_settings_sanitizer_init', 'gd_genesis_settings_sanitization_filters' );

Đăng ký Metabox

Tạo hai trường đầu vào trong trang Cài đặt Chủ đề bằng hàm add_meta_box (). Genesis Framework đang cung cấp Hook “genesis_theme_settings_metaboxes” và bạn có thể tạo metabox không giới hạn cho chủ đề của mình.

Tôi vừa nối hàm genesis_theme_settings_metaboxes và tạo giao diện người dùng bản quyền chân trang trong trang Cài đặt chủ đề. Đây là mã:

add_action('genesis_theme_settings_metaboxes', 'gd_add_metaboxes', 99, 1);
function gd_add_metaboxes( $pagehook ){
if( is_admin() ):
add_meta_box( 'genesis-theme-settings-footer', __( 'Footer: Copyright Text & Credits', 'genesis_developer' ), 'gd_footer_settings_box', $pagehook, 'main', 'high' );
endif;
}
function gd_footer_settings_box(){
?>
<p>
<label for="<?php echo GENESIS_SETTINGS_FIELD;?>copyright_text"><?php _e( 'Copyright Text', 'genesis_developer' ); ?></label><br/>
<input type = "text" name="<?php echo GENESIS_SETTINGS_FIELD;?>[copyright_text]" id="<?php echo GENESIS_SETTINGS_FIELD;?>[copyright_text]" value="<?php echo esc_attr( genesis_get_option('copyright_text') ); ?>" style="width:99%;" /> 
</p>
<p>
<label for="<?php echo GENESIS_SETTINGS_FIELD;?>credits"><?php _e( 'Credits', 'genesis_developer' ); ?></label><br/>
<input type = "text" name="<?php echo GENESIS_SETTINGS_FIELD;?>[credits]" id="<?php echo GENESIS_SETTINGS_FIELD;?>[credits]" value="<?php echo esc_attr( genesis_get_option('credits') ); ?>" style="width:99%;" /> 
</p>
<?php
}

Bây giờ chúng ta cần lấy giá trị từ cài đặt chủ đề và hiển thị ở giao diện người dùng. Tôi đang lọc nội dung genesis_footer_output với giá trị đã nhập của mình. Đây là mã:

add_filter('genesis_footer_output', 'gd_footer_output', 10, 3);
function gd_footer_output($output, $backtotop_text, $creds_text){
$new_output = '';
$copyright_text = html_entity_decode( genesis_get_option('copyright_text') );
$credits = html_entity_decode( esc_attr( genesis_get_option('credits') ) );
$new_output = ( ! empty( $copyright_text ) ) ? '<div class="footer-left">' . $copyright_text . '</div>' : $output; 
$new_output .= ( ! empty( $credits ) ) ? '<div class="footer-right">' . $credits . '</div>' : '';
return $new_output;
}

Ngoài ra, tôi đã thêm một vài CSS trong tệp style.css để có kết quả tốt hơn.

.footer-left{
  float: left;
  width: 48.717%;
  text-align: left;
}
.footer-right{
  float: right;
  width: 48.717%;
  text-align: right;
}
@media only screen and (max-width: 860px) {
  .footer-left,
  .footer-right{
    float: none;
    width: 100%;
    text-align: center;
  }
}

Tất cả các bước đã hoàn thành ngay bây giờ. Chỉ cần làm mới trang chủ của bạn và nhận văn bản bản quyền của bạn.