특정 카테고리에 맞춤 입력란을 추가하고 싶습니다. 카테고리에는 다음 필드 만 있습니다.
이름:
강타:
부모의:
기술:
TV 시리즈 사이트가 있으므로 필드를 더 추가하고 싶습니다. 새 카테고리를 만들 때 이와 같은 것을 원합니다 (Category = Series).
이름:
예술가:
년:
유형:
유형:
개요:
강타:
부모의:
기술:
등등...
도와주세요? 미리 감사드립니다.
특정 카테고리에 맞춤 입력란을 추가하고 싶습니다. 카테고리에는 다음 필드 만 있습니다.
이름:
강타:
부모의:
기술:
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');
edited_category
후크, tag_ID
에있을 것입니다 $_POST
배열이 아닌에서 $_GET
. 또한 add_term_meta
가능한 오래된 항목을 재정의하는 대신 실제로 새 항목을 추가합니다. update_term_meta
대신 사용하십시오 .
이 코드는 작동합니다 :
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 테이블을 생성하거나 $_POST
vars를 검사하는 예는 없으므로 작은 일을 직접 수행해야하지만 ... :) 위에 빌드하는 적절한 코드베이스처럼 보입니다.