Code tạo chức năng seri bài viết
Wordpress
Giza Data
Tháng hai 13, 2023
Code này có chức năng tạo seri bài viết, quản lý seri như 1 dạng chuyên mục, và có thể chọn seri khi đăng bài viết mới hay chỉnh sửa bài viết.
Bước 1: Thêm code này vào file funtion của theme
/* seri bài viết */
function create_series_taxonomy() {
$labels = array(
'name' => 'Series',
'singular_name' => 'Series',
'search_items' => 'Search Series',
'all_items' => 'All Series',
'parent_item' => 'Parent Series',
'parent_item_colon' => 'Parent Series:',
'edit_item' => 'Edit Series',
'update_item' => 'Update Series',
'add_new_item' => 'Add New Series',
'new_item_name' => 'New Series Name',
'menu_name' => 'Series',
);
$args = array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array('slug' => 'series'),
);
register_taxonomy('series', 'post', $args);
}
add_action('init', 'create_series_taxonomy', 0);
function add_series_meta_box() {
add_meta_box(
'series_meta_box',
'Series',
'display_series_meta_box',
'post',
'side',
'default'
);
}
add_action('add_meta_boxes', 'add_series_meta_box');
function display_series_meta_box($post) {
wp_nonce_field(basename(__FILE__), 'series_nonce');
$series_terms = get_terms(array('taxonomy' => 'series', 'hide_empty' => false));
$post_series = wp_get_post_terms($post->ID, 'series', array('fields' => 'ids'));
foreach ($series_terms as $series_term) {
echo '<input type="checkbox" name="series[]" value="' . $series_term->term_id . '" ' . checked(in_array($series_term->term_id, $post_series), true, false) . '> ' . $series_term->name . '<br>';
}
}
function save_series_meta_box($post_id) {
if (!isset($_POST['series_nonce']) || !wp_verify_nonce($_POST['series_nonce'], basename(__FILE__))) {
return;
}
if (!current_user_can('edit_post', $post_id)) {
return;
}
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return;
}
if (isset($_POST['series'])) {
$series = array_map('intval', $_POST['series']);
wp_set_object_terms($post_id, $series, 'series');
} else {
wp_set_object_terms($post_id, array(), 'series');
}
}
add_action('save_post', 'save_series_meta_box');
Bước 2: Thêm code này vào file hiển thị nội dung bài viết
<!-- seri bài viết -->
<?php
$post_series = wp_get_post_terms(get_the_ID(), 'series');
if (!empty($post_series)) {
$series_term = array_shift($post_series);
$series_posts = new WP_Query(array(
'posts_per_page' => -1,
'tax_query' => array(
array(
'taxonomy' => 'series',
'field' => 'term_id',
'terms' => $series_term->term_id
)
)
));
if ($series_posts->have_posts()) {
echo '<div class="seribaiviet">
<h2>Seri bài viết: ' . $series_term->name . '</h2>
';
echo '<ul>';
while ($series_posts->have_posts()) {
$series_posts->the_post();
echo '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
}
echo '</ul>
</div>';
}
wp_reset_postdata();
}
?>
<!-- end seri bài viết -->
Vậy là xong, tùy biết html và CSS theo sở thích của mình nhé.
Quảng Cáo