2014-01-20 1 views
0

우수한 코드를 기반으로 Wordpress 기반 블로그 용 사용자 정의 아카이브 디스플레이를 코딩했습니다. HERE입니다.사용자 정의 워드 프레스 포스트 아카이브 채우기 특정 포스트 카테고리 제외

기본적으로, 그것은 무엇을 :

Custom archive image from www.wpbeginner.com

하지만 archiveable 안 범주에 속하는 아카이브 특정 게시물에서 필터링하는 방법을 찾아야합니다. 예를 들어 카테고리 "기타 아이디어"에 실제 게시물이 아닌 항목이있는 경우 블로그 소유자는 게시물 아카이브에서 해당 게시물을 사용할 수 없도록하려는 것입니다.

나는 계속 찾아 다녔으며 저에게 적합한 것을 찾을 수 없었습니다. 내 생각 엔 THIS 소스가 도움이 될지 모르지만 나는 물건을 시험해보고 저를 위해 뭔가를 얻을 수 없습니다. 그래서 너희들을 생각해. 어쩌면 당신은 아이디어를 가지고있을 것입니다 ...

저는 지금 당장 가지고있는 PHP 코드를 매우 간단합니다. 분명히 문제는 쿼리 자체에서 게시물을 필터링하는 것이지만 나에게 맞는 쿼리를 찾을 수없는 것 같습니다.

플러스/마이너스 특정 요구에 맞게하기 위해 내가 그것에했습니다 사소한 조작, 그것은 기본적으로 제공 여기에 첫 번째 소스에서 얻은 코드입니다 :

global $wpdb; 
$limit = 0; 
if(is_date()) { 
    $year_now = get_the_time('Y'); 
} else { 
    $year_now = date('Y'); 
} 
$year_prev = null; 
$months = $wpdb->get_results("SELECT DISTINCT MONTH(post_date) AS month , YEAR(post_date) AS year, COUNT(id) as post_count FROM $wpdb->posts WHERE post_status = 'publish' and post_date <= now() and post_type = 'post' GROUP BY month , year ORDER BY post_date DESC"); 
foreach($months as $month) : 
$year_current = $month->year; 
if ($year_current != $year_prev){ 
    if ($year_prev != null){ 
     // Do nothing 
    } 

    /* BREAK PHP HERE FOR SOME HTML */ 
    <li class="archive-year"><a href="<?php bloginfo('url') ?>/<?php echo $month->year; ?>/"><?php echo $month->year; ?></a></li> 
    /* BACK ON REGULAR PHP */ 

} 
if($year_current == $year_now) { 

    /* BREAK PHP HERE FOR SOME HTML */ 
    <li class="archive-month"><a href="<?php bloginfo('url') ?>/<?php echo $month->year; ?>/<?php echo date("m", mktime(0, 0, 0, $month->month, 1, $month->year)) ?>"><span class="archive-month"><?php echo date_i18n("F", mktime(0, 0, 0, $month->month, 1, $month->year)) ?></span></a></li> 
    /* BACK ON REGULAR PHP */ 

} 
$year_prev = $year_current; 
endforeach; 

답변

0

음, 아주 많지 않은 사람처럼 보인다 거기에이 문제가 있거나 비슷한 것에 관심이 있습니다. 그러나 SO의 본질을 따를 때, 비슷한 문제가있는 사람이 있다면, 내가 찾은 많은 것들을 사용하고 함께 모으고 5 시간의 시련을 겪고 해결할 수 있다는 것을 알게되어 행복 할 것입니다. 나는 다음과 같은 쿼리를 내놓았다있는 마지막 오류 : X, YZ

SELECT DISTINCT MONTH(post_date) AS month, YEAR(post_date) AS year, COUNT(id) as post_count FROM $wpdb->posts INNER JOIN $wpdb->term_relationships ON($wpdb->posts.ID = $wpdb->term_relationships.object_id) INNER JOIN $wpdb->term_taxonomy ON($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) WHERE $wpdb->term_taxonomy.term_id != X AND $wpdb->term_taxonomy.parent != X AND $wpdb->term_taxonomy.term_id != Y AND $wpdb->term_taxonomy.parent != Y AND $wpdb->term_taxonomy.term_id != Z AND $wpdb->term_taxonomy.parent != Z AND $wpdb->term_taxonomy.taxonomy = 'category' AND $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'post' AND post_date <= now() and post_type = 'post' GROUP BY month , year ORDER BY post_date DESC 

이 카테고리 ID 번호로 대체합니다. (카테고리를 수정하고 맞춤 보관함에서 숨길 카테고리에 마우스를 올리면 Wp-admin 섹션으로 이동하면 링크 URL에 &tag_ID=# 부분이 있음을 알 수 있습니다. #은 카테고리 번호.)

글쎄, 그게 좋았어. 누군가가 도움이되기를 바랍니다!