본문 바로가기

wordpress/wordpress기초

워드프레스 - 테마 만들기 - 책목록에 표지 넣기

반응형

필터

1. 액션: 아무것도 리턴하지 않는다. 대체로 출력에 사용한다.

2. 필터 : 콘텐츠를 받아서 바꾼뒤 리턴한다

add_filter$tag:string$function_to_add:callable$priority:integer$accepted_args:integer )

 

functions.php에 필터를 추가하는 함수를 추가해준다

 

functions.php

<?php
include 'functions-post-type.php';
include 'functions-setup.php';
include 'functions-taxonomy.php';
include 'functions-meta-box.php';
include 'functions-save.php';
include 'functions-enqueue-scripts.php';
include 'functions-manage-columns.php';

 

functions-manage-columns.php

<?php
add_filter('manage_book_posts_columns', function($columns){
    array_unshift($columns, '표지');
    return $columns;
});

간단하게 표지를 추가만 해보는 필터를 작성해보았다 .

 

 

functions-manage-columns.php

<?php
add_filter('manage_book_posts_columns', function ($columns) {
    $columns = [
        'cb' => '<input type="checkbox"/>',
        'cover' => '표지',
        'title' => '제목',
        'taxonomy-book_subject' => '주제',
        'taxonomy-book_author' => '저자',
        'taxonomy-book_translator' => '역자',
        'date' => '일자'
    ];
    return $columns;
});

// function의 인자값이 하나가 아니므로 
add_action('manage_book_posts_custom_column', function ($column, $post_id) {
    switch ($column) {
        case 'cover':
            $cover_id = get_post_meta(($post_id), 'cover_id', true);
            if (!$cover_id) {
                break;
            }
            $url = wp_get_attachment_image_url($cover_id);
            if (!$url) {
                break;
            }

            echo "<img src='{$url}' height='150'>";

            break;
    }
}, 10, 2);

 

 

 

 

 

 

 

이미지 업로드시 해당 정확한크기 옵션을 해제하면 원본을 기반으로 데이터가 올라간다 

 


썸네일 재생성하기

1. wp-cli 이용

2. regenerate thumbnails 플러그인 이용

 

 

 

설치후 active를 통해 활성화를 눌러주면

도구부분에 regenerate thumbnails 플러그인이 추가가 된다. 

 

첫번째 체크부분 그대로 regenerate를 누르면 재 생성이 시작되고 

 

표지 부분에도 잘 적용된것을 확인 할 수 있다. 

 

 

functions.php 에서 

 

add_image_size('cover', 300, 300, false )등으로 옵션을 추가할수도 있다 .

 

functions-setup.php

<?php
add_action('wp_enqueue_scripts',function(){
    wp_enqueue_style('mbs-style',get_stylesheet_uri());
});



add_action('after_setup_theme', function(){
    add_theme_support('title-tag');
    add_theme_support( 'automatic-feed-links');

    add_image_size('book_cover', 300, 300, false );
});

 

관리자단 css 설정하기 

 

 

 

functions-enqueue-scripts.php

<?php
add_action('admin_enqueue_scripts', function(){
    
    $screen = get_current_screen();

    if($screen->id === 'book'){
        wp_enqueue_script('mbs_media', get_template_directory_uri().'/js/book-edit-media.js', ['media-views'], '2020-10-27',true);
        
    }
    
    wp_enqueue_style('bookstore-admin', get_template_directory_uri() . '/admin.css', array(), 1.0);

});

 

admin.css

@charset "utf-8";

.post-type-book .wp-list-table{
    table-layout: auto;
}

.post-type-book .column-cover{
    width:110px;
}

.post-type-book .column-title{
    min-width: 200px;
}

@media screen and (max-width:782px){
    .post-type-book .column-cover{
        display: none!important;
    }

    .post-type-book .column-cover img{
        padding-left: 32%;
    }
} 

 

 

정상적으로 열너비 까지 완료되었다.

반응형