我创建了一个名为product_categories的自定义分类法。
它有三个字段:
横幅图片
用于分类图像和
排序顺序。
我在其中添加了10个类别,同时也提供了排序顺序输入。
现在我想在排序顺序中显示它,但它不起作用。
在pt-categories排序顺序输入是
<tr class="form-field">
<th scope="row" valign="top"><label for="cat_sort_order"><?php _e('Product Sort Order'); ?></label></th>
<td>
<input id="banner-url" name="term_meta[sort_order]" type="text" style="width: 100%;" value="<?php echo $term_meta['sort_order'] ? $term_meta['sort_order'] : ''; ?>" />
<span class="description"><?php _e(' '); ?></span>
</td>
保存功能
function save_product_categories_custom_fields($term_id)
{
if (isset($_POST['term_meta'])) {
$t_id = $term_id;
$term_meta = get_option("taxonomy_term_$t_id");
$cat_keys = array_keys($_POST['term_meta']);
foreach ($cat_keys as $key) {
if (isset($_POST['term_meta'][$key])) {
$term_meta[$key] = $_POST['term_meta'][$key];
}
}
//save the option array
update_option("taxonomy_term_$t_id", $term_meta);
}
}
以下是名为
的类别function getLatestProducts() {
$args = array(
'post_status' => 'publish',
'post_type' => 'products',
'posts_per_page' => 12,
'meta_key' => '_cus_sort_order',
'orderby' => 'meta_value_num',
'order' => 'ASC'
);
?>
<?php
$args = array(
'orderby' => 'name',
);
$terms = get_terms('product_categories', $args);
foreach($terms as $term) {
$prod_meta = get_option("taxonomy_term_".$term->term_id);
?>
<a href="<?php echo get_term_link($term->slug, 'product_categories') ?>">
<?php
echo '<img src="'.$prod_meta['img'].'" title="" alt=""></a>'; ?>
</div>
<div class="product-name">
<h5>
<a href="<?php echo get_term_link($term->slug, 'product_categories') ?>">
<?php echo $term->name;?>
</a>
</h5>
它显示了类别名称和图像,但没有按排序顺序显示。
答案 0 :(得分:1)
您的代码被调用的类别
中存在错误更正后的代码
function getLatestProducts() {
$args = array(
'post_status' => 'publish',
'post_type' => 'products',
'posts_per_page' => 12,
'meta_key' => '_cus_sort_order',
'orderby' => 'meta_value_num, name',
'order' => 'ASC'
);
$terms = get_terms('product_categories', $args);
foreach($terms as $term) {
$prod_meta = get_option("taxonomy_term_".$term->term_id);
?>
<a href="<?php echo get_term_link($term->slug, 'product_categories') ?>">
<?php
echo '<img src="'.$prod_meta['img'].'" title="" alt=""></a>'; ?>
</div>
<div class="product-name">
<h5>
<a href="<?php echo get_term_link($term->slug, 'product_categories') ?>">
<?php echo $term->name;?>
</a>
</h5>
我删除了一个在主参数数组后调用的参数数组。由于下面提到的参数数组覆盖了上面提到的参数数组。
删除参数数组
$args = array(
'orderby' => 'name',
);
希望这有帮助!
答案 1 :(得分:0)
根据Mehul的回答,你的保存功能也有一些错误。
您是否检查了以前保存的类别排序顺序?
"taxonomy_term_$t_id"
应为"taxonomy_term_" . $t_id
。否则,您将所有内容保存为taxonomy_term_$t_id
选项,而不是动态术语ID。
function save_product_categories_custom_fields($term_id)
{
if (isset($_POST['term_meta'])) {
$t_id = $term_id;
$term_meta = get_option("taxonomy_term_" . $t_id);
$cat_keys = array_keys($_POST['term_meta']);
foreach ($cat_keys as $key) {
if (isset($_POST['term_meta'][$key])) {
$term_meta[$key] = $_POST['term_meta'][$key];
}
}
//save the option array
update_option("taxonomy_term_" . $t_id, $term_meta);
}
}