사용자 정의 메타 상자 템플릿 튜토리얼 시리즈 1부에서는 일련의 필드를 반복하고 다양한 유형의 양식 필드에 필요한 HTML과 함께 각 필드를 출력하는 사용자 정의 메타 상자를 설정하는 방법을 다뤘습니다. 이제 어레이와 스위치 박스에 몇 가지 고급 항목을 추가할 준비가 되었습니다.
라디오 버튼은 체크박스와 같은 켜기/끄기 스위치가 아니라 사용자가 두 가지 옵션 중 적어도 하나를 선택하도록 강제하는 데 사용되므로 실제로 단독으로 사용되지 않습니다. 가장 먼저 해야 할 일은 $custom_meta_fields
배열에 단일 옵션을 추가하는 것입니다.
이 항목을 1부에서 시작한 원본 $custom_meta_fields
배열의 다른 배열 항목에 추가하세요.
이 배열은 셀렉트박스 항목과 거의 동일합니다. 여기에는 기본 태그, 설명 및 고유 ID가 있습니다. 유형을 정의한 다음 옵션 배열을 추가합니다. 나중에 저장된 값을 얻기 위해 저장된 배열을 확인할 것이므로 옵션 키가 옵션 값과 동일한 것이 중요합니다.
으아악이 코드는 메타 박스 스위치의 마지막 "break;" 뒤에 추가됩니다.
체크박스를 스위치로 사용하는 방법과 여러 옵션 중에서 하나를 선택하는 방법을 다루었지만 동일한 필드에 여러 값을 저장할 수 있기를 원하시나요? 여기가 체크박스 그룹이 유용한 곳입니다.
으아악이를 $custom_meta_fields
배열에 다시 추가하면 고유 ID와 정의된 유형이 있는 유사한 필드와 설정이 거의 동일합니다.
여기서 가장 큰 차이점은 이 데이터를 배열로 저장한다는 것입니다.
다양한 목적에 맞게 사용자 정의 분류를 제공할 수 있다는 것은 좋지만 때로는 사용자가 게시물당 하나의 용어만 선택하도록 제한하고 싶을 때도 있습니다. 간단한 해결책은 WordPress가 게시물 작성 페이지에 추가하는 기본 선택 상자를 제거하고 이를 사용자 정의 메타 상자에 선택 상자로 추가하는 것입니다.
으아악이 예에서는 내장된 분류 "카테고리"를 사용하겠습니다. $custom_meta_fields
배열에 추가하세요. "id"가 카테고리 이름과 동일한지 확인하세요.
이 필드를 완벽하게 작동하려면 우리가 설정한 다른 필드보다 더 많은 정보가 필요합니다.
사용자 경험이나 데이터 저장 측면에서 충돌 없이 기본 상자를 사용자 정의 선택 상자로 재정의하고 싶기 때문에 화면에서 분류 편집 상자를 제거해야 합니다.
으아악여기에서 $custom_meta_fields
数组来循环遍历每个“tax_select”字段并将其添加到此删除函数中,但单独命名它们可能要简单得多。您需要知道分类框的 div 的 ID,才能正确删除它。在 WordPress Codex 中了解有关 remove_meta_box()
배열을 사용하여 각 "tax_select" 필드를 반복하고 이 삭제 기능에 추가할 수 있지만 개별적으로 이름을 지정하는 것이 훨씬 더 간단할 것입니다. 카테고리 상자를 올바르게 삭제하려면 카테고리 상자의 div ID를 알아야 합니다. WordPress Codex에서 remove_meta_box()
에 대해 자세히 알아보세요.
이 필드의 마지막 단계는 분류가 사용자 정의 필드가 아닌 있는 그대로 저장되었는지 확인하는 것입니다. 이를 위해 이 시리즈의 1부에서 만든 save_custom_meta()
함수를 다시 수정하겠습니다.
먼저 필드 루프에서 건너뜁니다. 다음 줄을 찾으세요:
으아악그런 다음 다음 줄을 추가하세요:
으아악그런 다음 foreach 루프 뒤에 다음을 추가하세요.
으아악이것은 카테고리 선택 필드의 값을 가져와 게시물의 카테고리 용어로 설정합니다.
另一个不太可能但有用的字段是通过将 ID 保存在自定义字段中来将另一个帖子与某个帖子关联起来。这非常类似于 CMS,我发现它对于诸如链接幻灯片帖子类型以转到网站上的另一个帖子或页面之类的事情非常有用,只需从下拉菜单中选择它即可。您可以稍后在另一个函数中使用该 ID 查询该帖子,以从该帖子中获取您需要的任何信息。
array( 'label' => 'Post List', 'desc' => 'A description for the field.', 'id' => $prefix.'post_id', 'type' => 'post_list', 'post_type' => array('post','page') )
我们这里有所有常见的嫌疑人,但最后我们添加了一个额外的变量来保存您想要在列表中的帖子类型。您可以在此数组中包含帖子、页面和任何其他自定义帖子类型。
// post_list case 'post_list': $items = get_posts( array ( 'post_type' => $field['post_type'], 'posts_per_page' => -1 )); echo '<select name="'.$field['id'].'" id="'.$field['id'].'"> <option value="">Select One</option>'; // Select One foreach($items as $item) { echo '<option value="'.$item->ID.'"',$meta == $item->ID ? ' selected="selected"' : '','>'.$item->post_type.': '.$item->post_title.'</option>'; } // end foreach echo '</select><br /><span class="description">'.$field['desc'].'</span>'; break;
您可以添加很多选项来过滤此查询,但我们使用的是对设置帖子类型的所有帖子的基本抓取。
如果到目前为止您一直在关注本系列的两个部分,那么您的最终盒子应该如下图所示:
我们确实正在填写可重复使用的模板,用于创建可重复的自定义元框字段,并添加了这种高级甚至非正统的字段。我们将在下一篇文章中用一些更棘手但有用的字段(例如日期选择器和图像上传器)来结束该系列。
위 내용은 고급: 재사용 가능한 사용자 정의 메타 상자: 고급 필드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!