Shortcode đăng bài viết tuyển dụng trong WordPress

bởi | Th3 3, 2023 | Kiến thức | 0 Lời bình

5/5 - (4 bình chọn)

Các bạn cài plugin custom post type để tạo post type tuyển dụng nha

// END ENQUEUE PARENT ACTION
function namespace_add_custom_types( $query ) {
  if( (is_category() || is_tag()) && $query->is_archive() && empty( $query->query_vars['suppress_filters'] ) ) {
    $query->set( 'post_type', array(
     'post', 'tuyendung'
        ));
    }
}
add_action( 'pre_get_posts', 'namespace_add_custom_types' );

// tuyen dung
add_shortcode('tuyendung','function_tuyendung');
function function_tuyendung(){
    ob_start();
?>
<div class="tuyendung_mediavnpro">
    <div class="row_tb_left_mediavnpro">
        
    <!-- khoi van phong-->
         <?php
   $args = array(
               'post_type' => 'tuyendung',
  'child_of'                 => 0,
       'parent'                   => 18,
       'orderby'                  => 'name',
       'order'                    => 'ASC',
       'hide_empty'               => 0,
       'hierarchical'             => 0,
           );

   $cats = get_categories($args);
   $parentCatName = get_cat_name($cats[0]->parent);
echo '<div class="dropdown"><h3>'.$parentCatName.'</h3>';
?><form class="form_khoivanpong" action="" method="post" name="form_khoivanpong">
    <ul>
     <?php
   foreach($cats as $cat) {
?><li>
    <input type="radio" id="<?php echo $cat->term_id; ?>" name="khoi_van_phong" value="<?php echo $cat->term_id; ?>"><label for="<?php echo $cat->term_id; ?>"><?php echo $cat->name; ?></label>
        </li>
<?php
   }
   ?>
  </ul></form></div>
  <!-- Khối cửa hàng  -->
   <?php
   $args = array(
               'post_type' => 'tuyendung',
  'child_of'                 => 0,
       'parent'                   => 23,
       'orderby'                  => 'name',
       'order'                    => 'ASC',
       'hide_empty'               => 0,
       'hierarchical'             => 0,
           );

   $cats = get_categories($args);
   $parentCatName = get_cat_name($cats[0]->parent);
echo '<h3>'.$parentCatName.'</h3>';
?><form class="form_khoicuahang" action="" method="post" name="form_khoicuahang"><ul>
     <?php
   foreach($cats as $cat) {
?><li>
    <input type="radio" id="<?php echo $cat->term_id; ?>" name="khoi_van_phong" value="<?php echo $cat->term_id; ?>"><label for="<?php echo $cat->term_id; ?>"><?php echo $cat->name; ?></label>
        </li>
<?php
   }
   ?>
   </ul></form>
   <!-- vi tri cong viec -->
      <?php
   $args = array(
               'post_type' => 'tuyendung',
  'child_of'                 => 0,
       'parent'                   => 28,
       'orderby'                  => 'name',
       'order'                    => 'ASC',
       'hide_empty'               => 0,
       'hierarchical'             => 0,
           );

   $cats = get_categories($args);
   $parentCatName = get_cat_name($cats[0]->parent);
echo '<h3>'.$parentCatName.'</h3>';
?><form class="form_vitri" action="" method="post" name="form_vitri"><ul>
     <?php
   foreach($cats as $cat) {
?><li>
    <input type="radio" id="<?php echo $cat->term_id; ?>" name="khoi_van_phong" value="<?php echo $cat->term_id; ?>"><label for="<?php echo $cat->term_id; ?>"><?php echo $cat->name; ?></label>
        </li>
<?php
   }
   ?>
   </ul></form>
   <!-- thoi gian lam viec -->
      <?php
   $args = array(
               'post_type' => 'tuyendung',
  'child_of'                 => 0,
       'parent'                   => 34,
       'orderby'                  => 'name',
       'order'                    => 'ASC',
       'hide_empty'               => 0,
       'hierarchical'             => 0,
           );

   $cats = get_categories($args);
   $parentCatName = get_cat_name($cats[0]->parent);
echo '<h3>'.$parentCatName.'</h3>';
?><form class="form_thogian" action="" method="post" name="form_thogian"><ul>
     <?php
   foreach($cats as $cat) {
?><li>
    <input type="radio" id="<?php echo $cat->term_id; ?>" name="khoi_van_phong" value="<?php echo $cat->term_id; ?>"><label for="<?php echo $cat->term_id; ?>"><?php echo $cat->name; ?></label>
        </li>
<?php
   }
   ?>
   </ul>
</form>
    </div>
    <div class="row_tb_right_mediavnpro">


<?php 
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

$args = array(
    'post_type'=>'tuyendung', // Your post type name
    'posts_per_page' => 20,
    'paged' => $paged,
);

$loop = new WP_Query( $args );

if ( $loop->have_posts() ) {
?>
        <div class="show_post">
<div class="top_show_p">Có <?php echo $loop->found_posts; ?> việc làm</div>
<?php
    while ( $loop->have_posts() ) : $loop->the_post();

            ?>

            <div class="item_post">
                <div class="item_left"><span><?php the_title(); ?></span>
                    <div class="muc_luong">Mức lương: <?php the_field('muc_luong'); ?></div>
                    <div class="so_luong">Số lượng: <?php the_field('so_luong'); ?></div>
                </div>
                <div class="item_right"><span>Hạn nộp: <?php the_field('han_nop'); ?></span>
                    <button><a href="<?php the_permalink() ?>">chi tiết</a></button>
                </div>
            </div>

            <?php

    endwhile;

    $total_pages = $loop->max_num_pages;?>
   <div class="panigation_post">
    <?php

    if ($total_pages > 1){

        $current_page = max(1, get_query_var('paged'));

        echo paginate_links(array(
            'base' => get_pagenum_link(1) . '%_%',
            'format' => '/page/%#%',
            'current' => $current_page,
            'total' => $total_pages,
            'prev_text'    => __('« Lùi lại'),
            'next_text'    => __('Tiếp theo »'),
        ));
    }?>
</div>
    <?php  
}
wp_reset_postdata();?>
       

        </div>
        <!-- end show post-->
    </div>
</div>
<!-- scrip ajax-->
<script type="text/javascript">
    (function($){
        $(document).ready(function(){
            $('.row_tb_left_mediavnpro form input').click(function(){

                var khoivanphong = $('.row_tb_left_mediavnpro .form_khoivanpong input[type="radio"]:checked').val();
                var khoicuahang = $('.row_tb_left_mediavnpro .form_khoicuahang input[type="radio"]:checked').val();
                var vitri = $('.row_tb_left_mediavnpro .form_vitri input[type="radio"]:checked').val();
                var form_thogian = $('.row_tb_left_mediavnpro .form_thogian input[type="radio"]:checked').val();
                
                $.ajax({
                    type : "post", //Phương thức truyền post hoặc get
                    dataType : "json", //Dạng dữ liệu trả về xml, json, script, or html
                    url : '<?php echo admin_url('admin-ajax.php');?>', //Đường dẫn chứa hàm xử lý dữ liệu. Mặc định của WP như vậy
                    data : {
                        action: "loadpost", //Tên action
                        khoivanphong:khoivanphong,
                        khoicuahang:khoicuahang,
                        vitri:vitri,
                        form_thogian:form_thogian,
                    },
                    context: this,
                    beforeSend: function(){
                        //Làm gì đó trước khi gửi dữ liệu vào xử lý
                    },
                    success: function(response) {
                        //Làm gì đó khi dữ liệu đã được xử lý
                        if(response.success) {
                            $('.show_post').html(response.data);
                        }
                        else {
                            alert('Đã có lỗi xảy ra');
                        }
                    },
                    error: function( jqXHR, textStatus, errorThrown ){
                        //Làm gì đó khi có lỗi xảy ra
                        console.log( 'The following error occured: ' + textStatus, errorThrown );
                    }
                });
                // return false;
            })
        })
    })(jQuery)
</script>
<!-- end ajax-->
<?php
    $html = ob_get_clean();
    return $html;
}

add_action( 'wp_ajax_loadpost', 'loadpost_init' );
add_action( 'wp_ajax_nopriv_loadpost', 'loadpost_init' );
function loadpost_init() {
    //do bên js để dạng json nên giá trị trả về dùng phải encode
    $khoivanphong = (isset($_POST['khoivanphong']))?esc_attr($_POST['khoivanphong']) : '';
    $khoicuahang = (isset($_POST['khoicuahang']))?esc_attr($_POST['khoicuahang']) : '';
    $vitri = (isset($_POST['vitri']))?esc_attr($_POST['vitri']) : '';
    $form_thogian = (isset($_POST['form_thogian']))?esc_attr($_POST['form_thogian']) : '';
    
ob_start();
  

  $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

$args = array(
    'post_type'=>'tuyendung', // Your post type name
    'posts_per_page' => 20,
    'paged' => $paged,
    'tax_query' => array(
        'relation' => 'OR',
        array(
            'taxonomy' => 'category',
            'field'    => 'term_id',
            'terms'    => array( $khoivanphong, $khoicuahang, $vitri, $form_thogian),
        
        ),
    ),
);

$loop = new WP_Query( $args );
if ( $loop->have_posts() ) {
    ?>
    <div class="top_show_p">Có <?php echo $loop->found_posts; ?> việc làm</div>
    <?php 
    while ( $loop->have_posts() ) : $loop->the_post();

            ?>

            <div class="item_post">
                <div class="item_left"><span><?php the_title(); ?></span>
                    <div class="muc_luong">Mức lương: <?php the_field('muc_luong'); ?></div>
                    <div class="so_luong">Số lượng: <?php the_field('so_luong'); ?></div>
                </div>
                <div class="item_right"><span>Hạn nộp: <?php the_field('han_nop'); ?></span>
                    <button><a href="<?php the_permalink() ?>">chi tiết</a></button>
                </div>
            </div>

            <?php

    endwhile;

    $total_pages = $loop->max_num_pages;?>
   <div class="panigation_post">
    <?php

    if ($total_pages > 1){

        $current_page = max(1, get_query_var('paged'));

        echo paginate_links(array(
            'base' => get_pagenum_link(1) . '%_%',
            'format' => '/page/%#%',
            'current' => $current_page,
            'total' => $total_pages,
            'prev_text'    => __('« Lùi lại'),
            'next_text'    => __('Tiếp theo »'),
        ));
    }?>
</div>
    <?php  
}
wp_reset_postdata();

    $result = ob_get_clean(); //cho hết bộ nhớ đệm vào biến $result
    wp_send_json_success($result); // trả về giá trị dạng json
    die();//bắt buộc phải có khi kết thúc
}

0 Lời bình

Gửi Lời bình

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *