Hướng dẫn thêm các liên kết sau mỗi bài viết
Mở file functions.php
trong child theme của bạn (nếu chưa có child theme, bạn nên tạo child theme để tránh mất thay đổi khi update theme). Thêm đoạn code sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
/*thêm link sau bài viết*/ // Đăng ký metabox function custom_links_metabox() { add_meta_box( 'custom_links_metabox', 'Custom Links', 'render_custom_links_metabox', ['post', 'page'], // Áp dụng cho bài viết và trang 'normal', 'default' ); } add_action('add_meta_boxes', 'custom_links_metabox'); // Hiển thị metabox function render_custom_links_metabox($post) { // Lấy giá trị meta đã lưu $custom_links = get_post_meta($post->ID, '_custom_links', true); // Nếu không có dữ liệu, sử dụng dữ liệu mẫu mặc định $custom_links = is_array($custom_links) ? $custom_links : [ ['description' => 'Zalo', 'url' => 'https://zalo.me/0902299161'], ['description' => 'Facebook', 'url' => 'https://facebook.com/webdy.vn'], ['description' => 'YouTube', 'url' => 'https://youtube.com'], ['description' => 'Instagram', 'url' => 'https://instagram.com'], ['description' => 'Twitter', 'url' => 'https://twitter.com'] ]; // Nonce để bảo mật wp_nonce_field('save_custom_links', 'custom_links_nonce'); // Hiển thị các trường nhập liệu echo '<div id="custom-links-container">'; foreach ($custom_links as $index => $link) { echo '<div class="custom-link-item" style="margin-bottom: 10px;">'; echo '<input type="text" name="custom_links[' . $index . '][description]" value="' . esc_attr($link['description']) . '" placeholder="Description" style="width: 45%; margin-right: 5%;">'; echo '<input type="url" name="custom_links[' . $index . '][url]" value="' . esc_url($link['url']) . '" placeholder="URL" style="width: 45%;">'; echo '<button type="button" class="remove-link button" style="margin-left: 10px;">Remove</button>'; echo '</div>'; } echo '</div>'; echo '<button type="button" id="add-link" class="button">Add Link</button>'; // Thêm script JS để xử lý thêm và xóa link ?> <script> document.addEventListener('DOMContentLoaded', function () { const container = document.getElementById('custom-links-container'); const addButton = document.getElementById('add-link'); addButton.addEventListener('click', function () { const index = container.children.length; const newField = ` <div class="custom-link-item" style="margin-bottom: 10px;"> <input type="text" name="custom_links[${index}][description]" placeholder="Description" style="width: 45%; margin-right: 5%;"> <input type="url" name="custom_links[${index}][url]" placeholder="URL" style="width: 45%;"> <button type="button" class="remove-link button" style="margin-left: 10px;">Remove</button> </div>`; container.insertAdjacentHTML('beforeend', newField); }); container.addEventListener('click', function (e) { if (e.target.classList.contains('remove-link')) { e.target.parentElement.remove(); } }); }); </script> <?php } // Lưu dữ liệu meta function save_custom_links($post_id) { // Kiểm tra bảo mật if (!isset($_POST['custom_links_nonce']) || !wp_verify_nonce($_POST['custom_links_nonce'], 'save_custom_links')) { return; } // Kiểm tra quyền chỉnh sửa if (!current_user_can('edit_post', $post_id)) { return; } // Lưu dữ liệu if (isset($_POST['custom_links']) && is_array($_POST['custom_links'])) { $cleaned_links = array_map(function ($link) { return [ 'description' => sanitize_text_field($link['description']), 'url' => esc_url_raw($link['url']), ]; }, $_POST['custom_links']); update_post_meta($post_id, '_custom_links', $cleaned_links); } else { delete_post_meta($post_id, '_custom_links'); } } add_action('save_post', 'save_custom_links'); // Hiển thị Custom Links dưới bài viết hoặc trang function display_custom_links_on_frontend($content) { if (is_single() || is_page()) { global $post; $custom_links = get_post_meta($post->ID, '_custom_links', true); if (!empty($custom_links) && is_array($custom_links)) { $output = '<div class="custom-links" style="margin-top: 20px; padding: 10px; border-top: 1px solid #ddd;">'; $output .= '<h4> <span class="gradient">Quý khách cần tư vấn thiết kế web giá rẻ, vui lòng nhấn nút bên dưới:</span></h4>'; $output .= '<div class="link-buttons" style="display: flex; flex-wrap: wrap; gap: 10px;">'; foreach ($custom_links as $link) { $description = esc_html($link['description']); $url = esc_url($link['url']); if (!empty($description) && !empty($url)) { $output .= '<a href="' . $url . '" target="_blank" rel="noopener noreferrer" class="custom-link-button">'; $output .= $description; $output .= '</a>'; } } $output .= '</div>'; $output .= '</div>'; $content .= $output; } } return $content; } add_filter('the_content', 'display_custom_links_on_frontend'); /////----------- |
Quý khách cần tư vấn thiết kế web giá rẻ, vui lòng nhấn nút bên dưới:
Chào ! Bạn thấy nội dung này thế nào?
Xem thêm:
- SEO Từ Khóa: Làm Thế Nào Để Nhét Từ Khóa Vào Bài Viết Một Cách Tự Nhiên?
- Phi Linh Wedding – Pocket Planner for Your Wedding
- Hướng dẫn Google nhận diện Tên trang web (Site Name) theo hướng dẫn từ Google
- Hướng dẫn thêm các liên kết sau mỗi bài viết
- Loại bỏ các trường không cần thiết từ trang checkout WooCommerce