programing

*ALL* 워드프레스 카테고리에서 상위 카테고리 템플릿을 사용합니다.

abcjava 2023. 2. 20. 23:47
반응형

*ALL* 워드프레스 카테고리에서 상위 카테고리 템플릿을 사용합니다.

기본 템플릿 계층 동작을 변경하고 자체 카테고리 템플릿 파일이 없는 모든 하위 카테고리 수준 페이지가 상위 카테고리 템플릿 파일을 참조하도록 합니다.제 다른 글에서는 리처드 M.이 개별 서브카테고리의 문제를 해결하는 훌륭한 답변을 했습니다.추상화 할 줄 아는 사람?

function myTemplateSelect()
{
    if (is_category()) {
        if (is_category(get_cat_id('projects')) || cat_is_ancestor_of(get_cat_id('projects'), get_query_var('cat'))) {
            load_template(TEMPLATEPATH . '/category-projects.php');
            exit;
        }
    }
}

add_action('template_redirect', 'myTemplateSelect');

잘 부탁드립니다.

/**
 * Iterate up current category hierarchy until a template is found.
 * 
 * @link http://stackoverflow.com/a/3120150/247223
 */ 
function so_3119961_load_cat_parent_template( $template ) {
    if ( basename( $template ) === 'category.php' ) { // No custom template for this specific term, let's find it's parent
        $term = get_queried_object();

        while ( $term->parent ) {
            $term = get_category( $term->parent );

            if ( ! $term || is_wp_error( $term ) )
                break; // No valid parent

            if ( $_template = locate_template( "category-{$term->slug}.php" ) ) {
                // Found ya! Let's override $template and get outta here
                $template = $_template;
                break;
            }
        }
    }

    return $template;
}

add_filter( 'category_template', 'so_3119961_load_cat_parent_template' );

그러면 템플릿이 즉시 발견될 때까지 부모 계층이 루프업됩니다.

어떻게 하면 가계의 분류학에서도 같은 일을 할 수 있을까 궁금했어요.Dead Medic의 답변은 이 경우에도 몇 가지 수정을 거치면 효과가 있는 것 같습니다.

function load_tax_parent_template() {
    global $wp_query;

    if (!$wp_query->is_tax)
        return true; // saves a bit of nesting

    // get current category object
    $tax = $wp_query->get_queried_object();

    // trace back the parent hierarchy and locate a template
    while ($tax && !is_wp_error($tax)) {
        $template = STYLESHEETPATH . "/taxonomy-{$tax->slug}.php";

        if (file_exists($template)) {
            load_template($template);
            exit;
        }

        $tax = $tax->parent ? get_term($tax->parent, $tax->taxonomy) : false;
    }
}
add_action('template_redirect', 'load_tax_parent_template');

TEMPLATEPATH 변수가 하위 테마에 대해 작동하지 않을 수 있습니다. 상위 테마 폴더를 찾습니다.대신 STYLESHEATPATH를 사용하십시오.

$template = STYLESHEETPATH . "/category-{$cat->slug}.php";

언급URL : https://stackoverflow.com/questions/3119961/make-all-wordpress-categories-use-their-parent-category-template

반응형