빈 테마를 만들어서(functions.php와 style.css, index.php 뿐임), index.php 를 만들었습니다.
그리고 index.php 에 아래와 같은 내용을 넣었습니다. form을 만들어서 카테고리 id값을 받아 WP_Query에 넣어서 출력하는 형태입니다. 코드는 아래와 같습니다. 그런데 표시된 부분 (//<<<)에서 cat값이 정의되지 않았다고 오류가 계속 나네요.
Notice: Undefined index: cat in C:\Bitnami\wordpress\apps\wordpress\htdocs\wp-content\themes\runenmeal\index.php on line 13
form의 action이 문제인것 같다는 생각이 드는데 어떻게 잡아야될 지 모르겠네요. form을 입력 받아 현제 index.php에서 다시 받을거라 action="/"로 했는데, .오류가 뜨네요. action="<?php the_permalink(); ?>" 라고 해도 오류가 납니다.
뭐가 문제일까요..? ㅠ.ㅜ
감사합니다.
<body <?php body_class(); ?>>
<!-- 필터링 입력란 -->
<?php
if( $_GET['cat'] && !empty($_GET['cat']) ){ //<<<
$cat = $_GET['cat'];
}
?>
<div class="filter_container">
<form action="/" method="get">
<label>지역</label>
<select name="cat">
<option value="">전체</option>
<option value="1">카테고리1</option>
<option value="2">카테고리2</option>
<option value="3">카테고리3</option>
<option value="4">카테고리4</option>
</select>
<button type="submit" name="">필터</button>
</form>
<?php
$args = array(
'post_type' => 'post',
'posts_per_page' => -1,
'cat' => $cat
);
$query = new WP_Query($args);
while($query->have_posts() ) : $query->the_post();
?>
<h5><?php the_title(); ?> </h5>
<?php endwhile; wp_reset_query(); ?>
</div>
안녕하세요~^^
코드를 입력하실 땐 그냥 텍스트로 입력하지 마시고 에디터 기능 중 '코드 스니펫 삽입' 기능으로 입력해주세요.
올려주신 코드가 어땐 내용인지 알아보기가 쉽지가 않기 때문입니다 ㅎㅎ
$cat 변수를 받는쪽을 아래처럼 바꿔보시겠어요?
$cat = isset($_GET['cat']) ? sanitize_text_field($_GET['cat']) : '';
고맙습니다.
답변 감사합니다.
$cat 값을 수정했는데도 똑같이 오류가 나네요.
혹시나 해서, index.php 가 아닌, page-"해당페이지아이디".php 로 코드를 옮긴 후
<form action="<?php the_permalink(); ?>" method="get">
위와 같이 action을 바꾼 뒤, 해보니 똑같이 오류가 생기네요. 다만, 이때, for select로 cat 값을 선택해서 값을 전달해주니, 오류가 사라지네요. 하지만 처음 해당 페이지에 들어가면 cat값 전달이 안되어 오류가 생기는 것 같은데..
적어주신 코드를 보면, cat 값이 없으면 ' ' 설정이 되어 있는데도 그러네요. 혹시나해서 ' ' 이 아닌 '1' 등의 값을 해도 똑같은 오류가 생기네요.
$cat = isset($_GET['cat']) ? sanitize_text_field($_GET['cat']) : '';
이게 로컬에서 테스트를 하는 거라 이런 오류가 생기나 싶어서, 웹호스팅 된 계정을 통해 해당 내용을 테스트 하니 오류가 뜨지 않네요. form action 부분은 로컬에서 하면 안되는 건가요? ...ㅠ
(수정) 아 아니네요. wp_config 에 define('WP_DEBUG', false); 로 해놔서 그렇네요.ㅠ. 똑같이 오류가 생기는군요..ㅠ
에러가 발생되는 아래 코드 지우고
<?php
if($_GET['cat'] && !empty($_GET['cat'])){
$cat = $_GET['cat'];
}
?>
아래 코드로 적용해보신거죠?
<?php
$cat = isset($_GET['cat']) ? sanitize_text_field($_GET['cat']) : '';
?>
로컬이나 웹호스팅이나 상관없습니다.
주소창에 cat 부분이 있는지요?
아 위에 위에 if 구문을 없애고 $cat 부분을 바꿔야 하는거군요. (제가 부족한게 많아서...ㅠ)
이제 정상적으로 작동하네요.
선생님! 감사합니다!!