카테고리 보관물: wordpress

wordpress

카테고리에 맞춤 입력란 추가 더 추가하고 싶습니다. 새 카테고리를

특정 카테고리에 맞춤 입력란을 추가하고 싶습니다. 카테고리에는 다음 필드 만 있습니다.

이름:

강타:

부모의:

기술:

TV 시리즈 사이트가 있으므로 필드를 더 추가하고 싶습니다. 새 카테고리를 만들 때 이와 같은 것을 원합니다 (Category = Series).

이름:

예술가:

년:

유형:

유형:

개요:

강타:

부모의:

기술:

등등…

도와주세요? 미리 감사드립니다.



답변

일주일 전에 How To를 게시했습니다 .http : //en.bainternet.info/2011/wordpress-category-extra-fields

이것이 도움이되기를 바랍니다.

오 하드


게시물의 세부 정보는 다음과 같습니다.

가장 먼저해야 할 일은 hook edit_category_form_fields 후크를 사용하여 범주 편집 양식에 추가 필드를 추가하고 추가 필드를 인쇄하는 간단한 함수를 사용하는 것입니다.

<?php
//add extra fields to category edit form hook
add_action ( 'edit_category_form_fields', 'extra_category_fields');

//add extra fields to category edit form callback function
function extra_category_fields( $tag ) {    //check for existing featured ID
    $t_id = $tag->term_id;
    $cat_meta = get_option( "category_$t_id");
?>
<tr class="form-field">
<th scope="row" valign="top"><label for="cat_Image_url"><?php _e('Category Image Url'); ?></label></th>
<td>
<input type="text" name="Cat_meta[img]" id="Cat_meta[img]" size="3" style="width:60%;" value="<?php echo $cat_meta['img'] ? $cat_meta['img'] : ''; ?>"><br />
        <span class="description"><?php _e('Image for category: use full url with '); ?></span>
    </td>
</tr>
<tr class="form-field">
<th scope="row" valign="top"><label for="extra1"><?php _e('extra field'); ?></label></th>
<td>
<input type="text" name="Cat_meta[extra1]" id="Cat_meta[extra1]" size="25" style="width:60%;" value="<?php echo $cat_meta['extra1'] ? $cat_meta['extra1'] : ''; ?>"><br />
        <span class="description"><?php _e('extra field'); ?></span>
    </td>
</tr>
<tr class="form-field">
<th scope="row" valign="top"><label for="extra2"><?php _e('extra field'); ?></label></th>
<td>
<input type="text" name="Cat_meta[extra2]" id="Cat_meta[extra2]" size="25" style="width:60%;" value="<?php echo $cat_meta['extra2'] ? $cat_meta['extra2'] : ''; ?>"><br />
        <span class="description"><?php _e('extra field'); ?></span>
    </td>
</tr>
<tr class="form-field">
<th scope="row" valign="top"><label for="extra3"><?php _e('extra field'); ?></label></th>
<td>
        <textarea name="Cat_meta[extra3]" id="Cat_meta[extra3]" style="width:60%;"><?php echo $cat_meta['extra3'] ? $cat_meta['extra3'] : ''; ?></textarea><br />
        <span class="description"><?php _e('extra field'); ?></span>
    </td>
</tr>
<?php
}

보시다시피, 4 개의 새로운 필드를 추가했고 모든 필드가 Cat_meta [key] 배열에 있습니다. 그렇게하면 옵션 테이블의 행에서만 각 필드에 대한 행 대신 모든 범주의 추가 필드를 저장하기 때문에 행을 생성하기 때문입니다.

다음으로 사용자가 카테고리 편집 양식을 제출하면 추가 필드를 데이터베이스에 저장해야하며 제출 된 각 필드를 통해 실행되고 update_option 함수를 사용하여 데이터베이스에 삽입하는 함수와 함께 “edited_category”를 사용하여 추가 필드를 데이터베이스에 저장해야합니다. , 이렇게 :

<?php
// save extra category extra fields hook
add_action ( 'edited_category', 'save_extra_category_fileds');

// save extra category extra fields callback function
function save_extra_category_fileds( $term_id ) {
    if ( isset( $_POST['Cat_meta'] ) ) {
        $t_id = $term_id;
        $cat_meta = get_option( "category_$t_id");
        $cat_keys = array_keys($_POST['Cat_meta']);
            foreach ($cat_keys as $key){
            if (isset($_POST['Cat_meta'][$key])){
                $cat_meta[$key] = $_POST['Cat_meta'][$key];
            }
        }
        //save the option array
        update_option( "category_$t_id", $cat_meta );
    }
}

위의 코드에서 추가 한 모든 추가 필드가 이름이 ‘category_ID’인 데이터베이스의 옵션 테이블에 저장되어 있음을 알 수 있습니다. 여기서 ID는 방금 편집 한 특정 범주의 ID이며이를 호출 할 수 있습니다. get_option 함수를 사용하여 플러그인 또는 테마 파일의 데이터

예를 들어 내 카테고리 ID가 25이면 내 코드는 다음과 같습니다.

<?php $cat_data = get_option('category_25'); ?>

처음에 언급했듯이 각 범주마다 다른 이미지를 표시해야 하므로이 경우 범주 제목을 표시하는 코드 바로 다음에 몇 가지 코드 줄을 테마의 category.php에 추가했습니다.

<?php
//first get the current category ID
$cat_id = get_query_var('cat');

//then i get the data from the database
$cat_data = get_option("category_$cat_id");

//and then i just display my category image if it exists
if (isset($cat_data['img'])){
    echo '<div class="category_image"><img src="'.$cat_data['img'].'"></div>';
}

좋고 쉽고 우리 모두 끝났습니다. 결과는 다음과 유사해야합니다.


답변

WordPress 4.4부터 add_term_meta () , update_term_meta ()get_term_meta () 함수가 추가되었습니다. 이는 MxmastaMills에서 제공하는 코드가 훨씬 덜 해킹 된 방식을 사용하도록 업데이트 될 수 있음을 의미합니다.

여기 내 업데이트가 있습니다. 맞춤 제목을 추가하려는 필드는 하나 뿐이지 만 추가하려는 모든 필드에 대해 동일하게 작동합니다.

function addTitleFieldToCat(){
    $cat_title = get_term_meta($_POST['tag_ID'], '_pagetitle', true);
    ?>
    <tr class="form-field">
        <th scope="row" valign="top"><label for="cat_page_title"><?php _e('Category Page Title'); ?></label></th>
        <td>
        <input type="text" name="cat_title" id="cat_title" value="<?php echo $cat_title ?>"><br />
            <span class="description"><?php _e('Title for the Category '); ?></span>
        </td>
    </tr>
    <?php

}
add_action ( 'edit_category_form_fields', 'addTitleFieldToCat');

function saveCategoryFields() {
    if ( isset( $_POST['cat_title'] ) ) {
        update_term_meta($_POST['tag_ID'], '_pagetitle', $_POST['cat_title']);
    }
}
add_action ( 'edited_category', 'saveCategoryFields');

답변

이 코드는 작동합니다 :

add_action ( 'edit_category_form_fields', function( $tag ){
    $cat_title = get_term_meta( $tag->term_id, '_pagetitle', true ); ?>
    <tr class='form-field'>
        <th scope='row'><label for='cat_page_title'><?php _e('Category Page Title'); ?></label></th>
        <td>
            <input type='text' name='cat_title' id='cat_title' value='<?php echo $cat_title ?>'>
            <p class='description'><?php _e('Title for the Category '); ?></p>
        </td>
    </tr> <?php
});
add_action ( 'edited_category', function() {
    if ( isset( $_POST['cat_title'] ) )
        update_term_meta( $_POST['tag_ID'], '_pagetitle', $_POST['cat_title'] );
});

답변

Paul Menard는 자신의 블로그에서 메타라는 용어를 만들고 사용하는 방법에 대한 예를 제공했습니다 .
WordPress 3.0의 새로운 분류 체계에 대한 사용자 정의 메타 .

DB 테이블을 생성하거나 $_POSTvars를 검사하는 예는 없으므로 작은 일을 직접 수행해야하지만 … 🙂 위에 빌드하는 적절한 코드베이스처럼 보입니다.


답변