Bạn đang tìm kiếm một cách hiệu quả để quản lý và truy cập các bài viết trên website WordPress của mình? Chức năng “Link Nội Dung” chính là giải pháp hoàn hảo!
Chức năng “Link Nội Dung” không chỉ giúp bạn quản lý nội dung dễ dàng hơn mà còn nâng cao trải nghiệm người dùng. Hãy tận dụng ngay hôm nay để tối ưu hóa quy trình làm việc của bạn trên WordPress!
<?php
// Thêm trang "Link nội dung" vào menu admin
function custom_content_links_page() {
add_menu_page(
'Link Nội Dung', // Tiêu đề trang
'Link Nội Dung', // Tiêu đề menu
'manage_options', // Quyền truy cập
'content-links', // Slug
'render_content_links_page', // Hàm hiển thị
'dashicons-admin-links' // Biểu tượng
);
}
add_action('admin_menu', 'custom_content_links_page');
// Hàm hiển thị trang liên kết nội dung
function render_content_links_page() {
// Kiểm tra quyền truy cập
if (!current_user_can('manage_options')) {
return;
}
// Xử lý khi người dùng chọn chuyên mục
$posts = [];
$display_option = isset($_POST['display_option']) ? $_POST['display_option'] : 'both'; // Mặc định hiển thị cả link và tag
$category_name = '';
$start_date = isset($_POST['start_date']) ? sanitize_text_field($_POST['start_date']) : '';
$end_date = isset($_POST['end_date']) ? sanitize_text_field($_POST['end_date']) : '';
if (isset($_POST['category_id'])) {
$category_id = intval($_POST['category_id']);
$category = get_category($category_id);
$category_name = $category ? $category->name : 'Tất cả bài viết'; // Lấy tên chuyên mục
$args = array('numberposts' => -1); // Mặc định lấy tất cả bài viết
if ($category_id > 0) {
$args['category'] = $category_id; // Lọc theo chuyên mục
}
// Thêm điều kiện lọc theo thời gian
if (!empty($start_date) && !empty($end_date)) {
$args['date_query'] = array(
array(
'after' => $start_date,
'before' => $end_date,
'inclusive' => true,
),
);
}
$posts = get_posts($args);
}
// Lấy tất cả chuyên mục
$categories = get_categories();
array_unshift($categories, (object) ['term_id' => 0, 'name' => 'Tất cả bài viết']); // Thêm tùy chọn "Tất cả bài viết"
// Hiển thị biểu mẫu
?>
<div class="wrap">
<h1>Link Nội Dung</h1>
<form method="post" action="">
<label for="category_id">Chọn chuyên mục:</label>
<select name="category_id" id="category_id" required>
<?php foreach ($categories as $category) : ?>
<option value="<?php echo esc_attr($category->term_id); ?>"><?php echo esc_html($category->name); ?></option>
<?php endforeach; ?>
</select>
<br />
<label for="start_date">Thời gian bắt đầu:</label>
<input type="date" name="start_date" id="start_date" value="<?php echo esc_attr($start_date); ?>" />
<label for="end_date">Thời gian kết thúc:</label>
<input type="date" name="end_date" id="end_date" value="<?php echo esc_attr($end_date); ?>" />
<input type="submit" class="button-primary" value="Hiển Thị Link" />
</form>
<?php if (!empty($posts)) : ?>
<h2>Bài Viết</h2>
<form method="post" action="">
<input type="hidden" name="category_id" value="<?php echo esc_attr($category_id); ?>" />
<input type="hidden" name="start_date" value="<?php echo esc_attr($start_date); ?>" />
<input type="hidden" name="end_date" value="<?php echo esc_attr($end_date); ?>" />
<label>
<input type="radio" name="display_option" value="links" <?php checked($display_option, 'links'); ?>> Chỉ Hiển Thị Link
</label>
<label>
<input type="radio" name="display_option" value="tags" <?php checked($display_option, 'tags'); ?>> Chỉ Hiển Thị Tag
</label>
<label>
<input type="radio" name="display_option" value="both" <?php checked($display_option, 'both'); ?>> Hiển Thị Link và Tag
</label>
<input type="submit" class="button-secondary" value="Cập Nhật" />
</form>
<div style="border: 1px solid #ccc; padding: 15px; margin-top: 15px;">
<ul id="link-list">
<?php foreach ($posts as $index => $post) : setup_postdata($post); ?>
<li>
<strong><?php echo ($index + 1) . '. '; ?></strong> <!-- Hiển thị số thứ tự -->
<?php if ($display_option == 'links' || $display_option == 'both') : ?>
<a href="<?php echo esc_url(get_permalink($post->ID)); ?>"><?php echo esc_html(get_the_title($post->ID)); ?></a>
<?php endif; ?>
<?php if ($display_option == 'tags' || $display_option == 'both') : ?>
<br />
<strong>Tags:</strong>
<?php
$tags = get_the_tags($post->ID);
if ($tags) {
$tag_links = [];
foreach ($tags as $tag) {
$tag_links[] = '<a href="' . esc_url(get_tag_link($tag->term_id)) . '">' . esc_html($tag->name) . '</a>';
}
echo implode(', ', $tag_links); // Hiển thị các thẻ với liên kết
} else {
echo 'Không có thẻ nào.';
}
?>
<?php endif; ?>
</li>
<?php endforeach; wp_reset_postdata(); ?>
</ul>
<button id="copy-button" class="button-secondary">Sao Chép Link</button>
<button id="download-button" class="button-secondary">Tải Xuống File TXT</button>
</div>
<?php endif; ?>
</div>
<script>
document.getElementById('copy-button').addEventListener('click', function() {
const links = Array.from(document.querySelectorAll('#link-list a')).map(link => link.href).join('\n');
navigator.clipboard.writeText(links).then(() => {
alert('Đã sao chép các liên kết!');
}, () => {
alert('Sao chép thất bại!');
});
});
document.getElementById('download-button').addEventListener('click', function() {
const links = Array.from(document.querySelectorAll('#link-list a')).map(link => link.href).join('\n');
const categoryName = '<?php echo esc_js($category_name); ?>';
const today = new Date();
const date = today.getDate().toString().padStart(2, '0');
const month = (today.getMonth() + 1).toString().padStart(2, '0'); // Tháng bắt đầu từ 0
const year = today.getFullYear();
const formattedDate = `${date}-${month}-${year}`;
const fileName = `${formattedDate}-${categoryName}.txt`; // Tạo tên file với ngày tháng và tên chuyên mục
const blob = new Blob([links], { type: 'text/plain' });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = fileName; // Sử dụng tên file động
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
URL.revokeObjectURL(url);
});
</script>
<?php
}
?>