본문 바로가기

디지털노마드/WordPress 강좌

WP_Query 사용해서 데이터 호출하기

홈페이지에 원하는 데이터를 부르고 싶을때 WP_Query 를 사용할 수 있습니다.

 

WP_RESET_POSTDATA ()


커스텀 루프에서 WP_Query 사용자 지정 루프는 기본 쿼리 개체를 변경합니다. 불러줄 개체가 없으면 에러가 날 수 있으니 taxonomy 를 만들어 불러 주도록 합시다. 

 

아래와 같이 포스트에 저장된 사진 데이터를 호출해 홈페이지에 적용해 봅시다.

 

photo by unsplash.com

 

 

웹페이지에 WP_Query 코드 입력하기

 

1. 아래의 코드를 front-page.php 파일에 입력합니다.

<?php

$args = array(

'post_type' => 'zb-work', // 임의로 만들어준 포스트 타입 이름 입니다.  

'posts_per_page' => 4,

'tax_query' => array(

array(

'taxonomy' => 'zb-featured',  // 임의로 만들어준 포스트 타입 이름 입니다.  

'field' => 'slug',

'terms' => 'front-page'

)

)

);

$query = new WP_Query( $args);

if( $query -> have_posts() ){

while( $query -> have_posts() ){

$query -> the_post();

 

echo '<article>';

echo '<a href=" ' . get_permalink() . ' ">';

the_post_thumbnail( 'large' );

echo '<p>' . get_the_title() .'</p>';

echo '</a>';

echo '</article>';

 

}

wp_reset_postdata();

}

?>

taxonomy 설정하기

 

2. 아래와 같은 코드를 inc/cpt-taxonomy.php 파일에 입력합니다. 이 텍스트는 카테고리를 만들기위한 데이터 이므로 앞 페이지에서 다룬  zb_register_custom_post_types() 다음에 입력해 줍니다. 

 

 

실제 코드는 아래를 참조합니다.

 

function zb_register_taxonomies() {

// Add Work Category taxonomy

$labels = array(

'name' => _x( 'Work Categories', 'taxonomy general name' ),

'singular_name' => _x( 'Work Category', 'taxonomy singular name' ),

'search_items' => __( 'Search Work Categories' ),

'all_items' => __( 'All Work Category' ),

'parent_item' => __( 'Parent Work Category' ),

'parent_item_colon' => __( 'Parent Work Category:' ),

'edit_item' => __( 'Edit Work Category' ),

'view_item' => __( 'Vview Work Category' ),

'update_item' => __( 'Update Work Category' ),

'add_new_item' => __( 'Add New Work Category' ),

'new_item_name' => __( 'New Work Category Name' ),

'menu_name' => __( 'Work Category' ),

);

$args = array(

'hierarchical' => true,

'labels' => $labels,

'show_ui' => true,

'show_in_menu' => true,

'show_in_nav_menu' => true,

'show_in_rest' => true,

'show_admin_column' => true,

'query_var' => true,

'rewrite' => array( 'slug' => 'work-categories' ),

);

register_taxonomy( 'zb-work-category', array( 'zb-work' ), $args );

 

// Add Featured taxonomy

$labels = array(

'name' => _x( 'Featured', 'taxonomy general name' ),

'singular_name' => _x( 'Featured', 'taxonomy singular name' ),

'search_items' => __( 'Search Featured' ),

'all_items' => __( 'All Featured' ),

'parent_item' => __( 'Parent Featured' ),

'parent_item_colon' => __( 'Parent Featured:' ),

'edit_item' => __( 'Edit Featured' ),

'update_item' => __( 'Update Featured' ),

'add_new_item' => __( 'Add New Featured' ),

'new_item_name' => __( 'New Work Featured' ),

'menu_name' => __( 'Featured' ),

);

 

$args = array(

'hierarchical' => true,

'labels' => $labels,

'show_ui' => true,

'show_admin_column' => true,

'show_in_rest' => true,

'query_var' => true,

'rewrite' => array( 'slug' => 'featured' ),

);

 

register_taxonomy( 'zb-featured', array( 'zb-work' ), $args );




function zb_rewrite_flush() {

 

ms_register_custom_post_types(); flush_rewrite_rules();

 

} add_action( 'after_switch_theme', 'zb_rewrite_flush' );

 

}

add_action( 'init', 'zb_register_taxonomies');

 

3. 위와 같은 코드를 입력하면 아래와 같은 카테고리 창이 생성됩니다. 여기서 필요한 카테고리를 만들어 줍니다.

 

 

4. Featured 창에 Front page 를 추가해줍니다. 앞에서 만든 파일 이미지를 Front page 에서 호출해 주는 역할을 합니다.

 

 

5. 앞글에서 만들어 둔 커스텀 포스트를 편집해서 각 카테고리에 넣습니다. 커스텀 포스트 아래에 Quick Edit -> Work Categories -> Graphic , Featured -> Front-page를 선택하고   'Update'를 눌러 저장합니다.

 

 

6. 앞에서 처럼 각 카테고리를 설정해주고 원하는 포스트를 Front-page에 나타나도록 설정합니다. 저는 Web 포스트 3개를 Front-page에 나타나도록 설정했습니다.

 

 위와 같은 설정을 마치고 저장하면 프론트페이지에 이미지 파일이 출력되는것을 볼 수 있습니다.