>
>层次分类法与类别类似,允许不同级别的条款(您可以将父母和子女分配为条款)。 非层次分类法的作用就像标签一样>您的自定义分类法可以让您输入以下每个条款
>的信息这是WordPress在您的条款方面将为您提供的全部。
>>默认信息可能是您的分类法所需的全部信息,但您可能需要保存其他信息,这些信息可以在网站上使用。
>> WordPress优惠是一系列挂钩,可用于修改分类法屏幕的管理区域,并在保存其他信息的过程中为您提供帮助。
对于我们的教程,我们将扩展默认类别分类学。您可以轻松地扩展自己创建的内部分类法或分类法,但是为简单起见,我们将修改现有的分类法。我们从哪里开始?
>创建它们 在编辑您的分类法所绑定的帖子类型的同时,即
例如,您可以在类别管理菜单(通过定义名称,slug,partend Description等)或直接在您的帖子或页面中创建它们(通过使用该类别的菜单(通过使用该类别),您可以为类别分类的类别创建术语类别元框并动态添加一个新类别)。>由于我们将保存其他信息,因此我们需要修改两个屏幕,以便我们可以连接,收集和与已保存的信息进行交互。
> 在本教程中,我们将添加其他表单元素,以便我们可以收集有关类别的更多信息。为此,我们将捕获以下元素:这些是最常见的形式元素,应有助于您更好地了解如何扩展分类法以保存其他信息。
修改添加类别管理菜单我们需要使用类别_add_form_fields钩。
>类别_ADD_FORM_FIELDS HONK用于将其他信息添加到类别管理屏幕中。该钩子采用单个参数,这是分类法本身的名称。此挂钩使我们可以在添加类别屏幕上添加其他信息,因此首先我们需要定义一个显示一些字段以供我们保存的函数。 以下代码应输入您的主题functions.php文件(或您用于自定义代码的另一个文件)
>>现在我们已经定义了函数,我们需要做的就是将其连接到我们的category_add_form_fields钩子,并且一旦显示“添加类别”屏幕,它将立即激活。我们将通过调用add_action()函数来做到这一点。
function add_extra_fields_to_category($taxonomy_name){ ?> <span><span><span><div</span> class<span>="form-field"</span>></span> </span> <span><span><span><label</span> for<span>="category-text"</span>></span>Category Text Field<span><span></label</span>></span> </span> <span><span><span><input</span> type<span>="text"</span> name<span>="category-text"</span> id<span>="category-text"</span>/></span> </span> <span><span><span><p</span>></span>This is a text field <span><span></p</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span> class<span>="form-field"</span>></span> </span> <span><span><span><label</span> for<span>="category-textarea"</span>></span>Category Textarea Field<span><span></label</span>></span> </span> <span><span><span><textarea</span> name<span>="category-textarea"</span> id<span>="category-textarea"</span>></span><span><span></textarea</span>></span> </span> <span><span><span><p</span>></span>This is a textarea field <span><span></p</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span> class<span>="form-field"</span>></span> </span> <span><span><span><label</span> for<span>="category-select"</span>></span>Category Select Field<span><span></label</span>></span> </span> <span><span><span><select</span> name<span>="category-select"</span> id<span>="category-select"</span>></span> </span> <span><span><span><option</span> value<span>="select-value-one"</span>></span> Value One <span><span></option</span>></span> </span> <span><span><span><option</span> value<span>="select-value-two"</span>></span> Value Two <span><span></option</span>></span> </span> <span><span><span></select</span>></span> </span> <span><span><span><p</span>></span>This is a select field <span><span></p</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span>></span> </span> <span><span><span><label</span> for<span>="category-radio-value-one"</span>></span>Category Radio Value One<span><span></label</span>></span> </span> <span><span><span><input</span> type<span>="radio"</span> name<span>="category-radio"</span> id<span>="category-radio-value-one"</span> value<span>="category-radio-value-one"</span>/></span> </span> <span><span><span><label</span> for<span>="category-radio-value-two"</span>></span>Category Radio Value Two<span><span></label</span>></span> </span> <span><span><span><input</span> type<span>="radio"</span> name<span>="category-radio"</span> id<span>="category-radio-value-two"</span> value<span>="category-radio-value-two"</span>/></span> </span> <span><span><span><p</span>></span>This is a radio field <span><span></p</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><?php </span></span><span><span>}</span></span>
完成此操作后,您的类别管理屏幕应显示您在功能中定义的其他字段。我的看起来如下:
作为旁注,当您定义字段以添加到屏幕中时,通常将它们包裹在形式类别中,这确保了包含的输入元素涵盖屏幕的完整宽度。如您在我们的示例中所看到的,除了无线电按钮外,我还启用了此类。我们不希望我们的广播按钮跨越全宽(因为看起来很奇怪)。
>
保存我们的新类别信息>现在我们已经修改了添加类别屏幕,我们需要保存其他信息,以便我们可以使用它。
在收集将直接用于更新WordPress数据库的信息时,这始终是消毒值的好习惯。我们可以使用“ sanitize_text_field($ string)”来消毒字符串,剥离所有标签,删除线路断路,选项卡和转换字符实体,例如
function add_extra_fields_to_category($taxonomy_name){ ?> <span><span><span><div</span> class<span>="form-field"</span>></span> </span> <span><span><span><label</span> for<span>="category-text"</span>></span>Category Text Field<span><span></label</span>></span> </span> <span><span><span><input</span> type<span>="text"</span> name<span>="category-text"</span> id<span>="category-text"</span>/></span> </span> <span><span><span><p</span>></span>This is a text field <span><span></p</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span> class<span>="form-field"</span>></span> </span> <span><span><span><label</span> for<span>="category-textarea"</span>></span>Category Textarea Field<span><span></label</span>></span> </span> <span><span><span><textarea</span> name<span>="category-textarea"</span> id<span>="category-textarea"</span>></span><span><span></textarea</span>></span> </span> <span><span><span><p</span>></span>This is a textarea field <span><span></p</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span> class<span>="form-field"</span>></span> </span> <span><span><span><label</span> for<span>="category-select"</span>></span>Category Select Field<span><span></label</span>></span> </span> <span><span><span><select</span> name<span>="category-select"</span> id<span>="category-select"</span>></span> </span> <span><span><span><option</span> value<span>="select-value-one"</span>></span> Value One <span><span></option</span>></span> </span> <span><span><span><option</span> value<span>="select-value-two"</span>></span> Value Two <span><span></option</span>></span> </span> <span><span><span></select</span>></span> </span> <span><span><span><p</span>></span>This is a select field <span><span></p</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span>></span> </span> <span><span><span><label</span> for<span>="category-radio-value-one"</span>></span>Category Radio Value One<span><span></label</span>></span> </span> <span><span><span><input</span> type<span>="radio"</span> name<span>="category-radio"</span> id<span>="category-radio-value-one"</span> value<span>="category-radio-value-one"</span>/></span> </span> <span><span><span><label</span> for<span>="category-radio-value-two"</span>></span>Category Radio Value Two<span><span></label</span>></span> </span> <span><span><span><input</span> type<span>="radio"</span> name<span>="category-radio"</span> id<span>="category-radio-value-two"</span> value<span>="category-radio-value-two"</span>/></span> </span> <span><span><span><p</span>></span>This is a radio field <span><span></p</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><?php </span></span><span><span>}</span></span>
>使用此ID,我们可以调用get_term($ term_id,$ targ_id,$ sualthomy_name)函数。
此函数采用两个参数,即术语本身的ID和分类名称。由于我们知道该术语本身的ID,并且我们正在从事类别分类法上工作,因此我们现在将能够访问术语对象。
此功能允许我们在WordPress选项表中创建一个新条目,以便我们保存我们的值。所有这些功能需求都是新选项的名称及其值。我们正在四次调用此功能,其中一个用于我们节省的新字段。
>
例如,如果我们要创建一个新的类别,称为测试时,当我们保存文本方面字段时,选项名称将成为term_category_textarea_test,我们的选择字段选项将成为text_category_select_test等这些字段以确保没有两个值都可以相同(因为所有slugs都是唯一的)。现在,我们要做的就是将此功能连接到create_category挂钩,我们进行了排序
修改编辑类别管理菜单
>现在我们已经在“添加类别”屏幕上显示了新的字段元素并将其保存为选项,我们需要修改编辑屏幕并在此处预先填充我们的新值(因此,如果需要,可以更新它们)。function save_extra_taxonomy_fields($term_id){ //collect all term related data for this new taxonomy $term_item = get_term($term_id,'category'); $term_slug = $term_item->slug; //collect our custom fields $term_category_text = sanitize_text_field($_POST['category-text']); $term_category_textarea = sanitize_text_field($_POST['category-textarea']); $term_category_select = sanitize_text_field($_POST['category-select']); $term_category_radio = sanitize_text_field($_POST['category-radio']); //save our custom fields as wp-options update_option('term_category_text_' . $term_slug, $term_category_text); update_option('term_category_textarea_' . $term_slug, $term_category_textarea); update_option('term_category_select_' . $term_slug, $term_category_select); update_option('term_category_radio_' . $term_slug, $term_category_radio); }
> cattory_edit_form_fields Hook用于将其他字段输出到类别的编辑管理屏幕上。该钩子带有一个值,这是术语对象本身。由于此挂钩将可以访问术语对象本身,因此收集其信息非常简单。
>我们需要创建一个功能,该函数将输出我们的其他字段并用我们的信息预先填充它们。由于我们现在可以访问该术语对象,这将很容易。
>此函数使用其传递在术语对象中的传递来访问术语本身的slug。使用此slug,它使用theget_option($ option_name)函数搜索了我们的四个保存的自定义字段值。
>
此功能以指定名称搜索一个选项并分配其值。在我们的情况下,我们正在寻找我们的四个字段值,并将它们分配给变量。<span>add_action('create_category','save_extra_taxonomy_fields');</span>
>此功能的最大部分是输出我们的HTML形式元素,它们作为表元素添加。对于我们的每个字段,我们都会显示标签和适用的文本,Textarea,Select或Radio Elements。
>我们预先填充自定义字段的方式在我们所处理的每种类型中都不同。这是我们要做的
>
选择字段 - 对于选择字段,我们首先创建选择元素及其所有相关选项。我们添加了称为值的选择元素的属性,并用我们保存的值填充它(这与我们处理文本字段的方式非常相似)。即使我们将值输出到选择列表中,我们仍然需要确定最初选择哪个选项。我们现在要做的是针对选择元素中的每个选项,我们确定其值是否与我们收集的值相同,如果选择它。我们使用基本的if语句,如果它们匹配我们将选定的属性呼应该选项,这将使浏览器默认选择此选项。确保正确填充这些值非常重要,就像您不选择它们一样,当用户更新其术语时,他们的数据可能不一致。
我们要做的就是将我们的新功能连接到category_edit_form_fields钩子,当我们单击“条款的编辑屏幕”时,此功能将执行。连接此功能后,应更新您的类别编辑屏幕并显示您的其他字段和值。我的看起来如下:
保存我们更新的类别信息
function add_extra_fields_to_category($taxonomy_name){ ?> <span><span><span><div</span> class<span>="form-field"</span>></span> </span> <span><span><span><label</span> for<span>="category-text"</span>></span>Category Text Field<span><span></label</span>></span> </span> <span><span><span><input</span> type<span>="text"</span> name<span>="category-text"</span> id<span>="category-text"</span>/></span> </span> <span><span><span><p</span>></span>This is a text field <span><span></p</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span> class<span>="form-field"</span>></span> </span> <span><span><span><label</span> for<span>="category-textarea"</span>></span>Category Textarea Field<span><span></label</span>></span> </span> <span><span><span><textarea</span> name<span>="category-textarea"</span> id<span>="category-textarea"</span>></span><span><span></textarea</span>></span> </span> <span><span><span><p</span>></span>This is a textarea field <span><span></p</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span> class<span>="form-field"</span>></span> </span> <span><span><span><label</span> for<span>="category-select"</span>></span>Category Select Field<span><span></label</span>></span> </span> <span><span><span><select</span> name<span>="category-select"</span> id<span>="category-select"</span>></span> </span> <span><span><span><option</span> value<span>="select-value-one"</span>></span> Value One <span><span></option</span>></span> </span> <span><span><span><option</span> value<span>="select-value-two"</span>></span> Value Two <span><span></option</span>></span> </span> <span><span><span></select</span>></span> </span> <span><span><span><p</span>></span>This is a select field <span><span></p</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span>></span> </span> <span><span><span><label</span> for<span>="category-radio-value-one"</span>></span>Category Radio Value One<span><span></label</span>></span> </span> <span><span><span><input</span> type<span>="radio"</span> name<span>="category-radio"</span> id<span>="category-radio-value-one"</span> value<span>="category-radio-value-one"</span>/></span> </span> <span><span><span><label</span> for<span>="category-radio-value-two"</span>></span>Category Radio Value Two<span><span></label</span>></span> </span> <span><span><span><input</span> type<span>="radio"</span> name<span>="category-radio"</span> id<span>="category-radio-value-two"</span> value<span>="category-radio-value-two"</span>/></span> </span> <span><span><span><p</span>></span>This is a radio field <span><span></p</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><?php </span></span><span><span>}</span></span>
当我们更新类别信息时,我们将需要一个函数来保存我们的新字段值。 值得庆幸的是,我们已经有一个功能。以前,我们创建了thesave_extra_taxonomy_fields($ TERM_ID)函数,我们在添加新类别术语时使用了。
function add_extra_fields_to_category($taxonomy_name){ ?> <span><span><span><div</span> class<span>="form-field"</span>></span> </span> <span><span><span><label</span> for<span>="category-text"</span>></span>Category Text Field<span><span></label</span>></span> </span> <span><span><span><input</span> type<span>="text"</span> name<span>="category-text"</span> id<span>="category-text"</span>/></span> </span> <span><span><span><p</span>></span>This is a text field <span><span></p</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span> class<span>="form-field"</span>></span> </span> <span><span><span><label</span> for<span>="category-textarea"</span>></span>Category Textarea Field<span><span></label</span>></span> </span> <span><span><span><textarea</span> name<span>="category-textarea"</span> id<span>="category-textarea"</span>></span><span><span></textarea</span>></span> </span> <span><span><span><p</span>></span>This is a textarea field <span><span></p</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span> class<span>="form-field"</span>></span> </span> <span><span><span><label</span> for<span>="category-select"</span>></span>Category Select Field<span><span></label</span>></span> </span> <span><span><span><select</span> name<span>="category-select"</span> id<span>="category-select"</span>></span> </span> <span><span><span><option</span> value<span>="select-value-one"</span>></span> Value One <span><span></option</span>></span> </span> <span><span><span><option</span> value<span>="select-value-two"</span>></span> Value Two <span><span></option</span>></span> </span> <span><span><span></select</span>></span> </span> <span><span><span><p</span>></span>This is a select field <span><span></p</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span>></span> </span> <span><span><span><label</span> for<span>="category-radio-value-one"</span>></span>Category Radio Value One<span><span></label</span>></span> </span> <span><span><span><input</span> type<span>="radio"</span> name<span>="category-radio"</span> id<span>="category-radio-value-one"</span> value<span>="category-radio-value-one"</span>/></span> </span> <span><span><span><label</span> for<span>="category-radio-value-two"</span>></span>Category Radio Value Two<span><span></label</span>></span> </span> <span><span><span><input</span> type<span>="radio"</span> name<span>="category-radio"</span> id<span>="category-radio-value-two"</span> value<span>="category-radio-value-two"</span>/></span> </span> <span><span><span><p</span>></span>This is a radio field <span><span></p</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><?php </span></span><span><span>}</span></span>
>自定义分类法可以与内置的分类法(类别和标签)完全相同。
>您需要进行的唯一修改将是使用的钩子的名称。对于类别,您将使用以下钩子:
态 态
create_category - 在要保存新类别术语$ galsonomy_name_edit_form_fields
create_ $ galsonomy_name,
edit_members
>几乎没有限制您现在可以通过分类法实现的复杂性,因为您可以保存您喜欢的任何信息并根据需要输出。
我如何扩展WordPress分类法?
>我如何在WordPress中创建自定义分类?在主题的functions.php文件中使用“ register_taxonomy”函数。此功能允许您定义自定义分类法的属性,例如其名称,标签,以及它是否是层次结构。
>是的,您可以将自定义字段添加到内置的WordPress分类法(例如类别和标签)中。这可以通过使用与自定义分类法添加自定义字段的相同函数和方法来完成。
>以上是扩展WordPress分类法的详细内容。更多信息请关注PHP中文网其他相关文章!