这是我的第一个问题。
我在functions.php文件中的主题中设置了自定义分类。
我已经为自定义分类(类别)添加了一些额外的元字段,也通过functions.php文件设置。
我正在使用update_option()函数。
以下是将选项保存到数据库的部分:
<?php
// save extra category extra fields hook
add_action ( 'edited_artists', '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 );
}
}
?>
在我的模板文件中,我这样称呼它们:
<?php
$terms = wp_get_post_terms( $post->ID, 'artists');
foreach ($terms as $term){
$term_id = $term->term_id;
$term_name = $term->name;
$term_taxonomy_id = $term->term_taxonomy_id;
$term_slug = $term->slug;
//do you term meta stuff here
//print_r($term);
}
?>
这是我使用它们的地方(除其他外),它当然在LOOP中:
<div class="single-sculpture-artist-info">
<?php
$category_meta = get_option( "category_$term_taxonomy_id");
?>
<a href="<?php echo get_site_url(); ?>/artists/<?php echo $term_slug; ?>">
<img src="<?php echo $category_meta['artists_photo'] ?>" alt="<?php echo $term_name; ?>">
</a>
<h3>
<a href="<?php echo get_site_url(); ?>/artists/<?php echo $term_slug; ?>"><?php echo $term_name; ?></a>
</h3>
<p><?php echo $category_meta['artists_city_province'] ?></p>
<p><?php echo $category_meta['artists_bio_excerpt'] ?></p>
</div>
所有这些代码都完美无缺。
我开始添加内容,但后来突然开始失败。我认为它开始于我尝试使用我在开发整个系统时使用的类别(分类)名称之一(我的猜测是它被缓存在某处或某处),但后来我尝试使用不同的名称,并添加一些其他以前没有的,也失败了。我最好的猜测是,不知何故,选项表超载了数据(限制或其他)。
这甚至可能吗?我没有很多,在该分类学中有56个工作岗位,还有34个类别(分类学术语)。
我尽力绕过它,但无法找到问题所在。
当我插入2或3个帖子时,它开始乱七八糟。所以,这个:
<a href="<?php echo get_site_url(); ?>/artists/<?php echo $term_slug; ?>">
输出正确的链接,但是,这个:
<img src="<?php echo $category_meta['artists_photo'] ?>"
犯规。它输出来自其他类别(来自同一CPT)的数据。我可以根据要求提供其他信息。
答案 0 :(得分:0)
没有回答你的问题,但是你知道WP 4.2+发生了很大的变化,他们将分裂分类术语,因此如果他们的slug匹配,分类术语不会共享相同的术语id。 / p>
请查看以下链接,了解有关如何解决此问题的详细信息
https://make.wordpress.org/core/2015/02/16/taxonomy-term-splitting-in-4-2-a-developer-guide/
https://developer.wordpress.org/plugins/taxonomy/working-with-split-terms-in-wp-4-2/
答案 1 :(得分:0)
通过我的网络帮助我找到了问题的解决方案。我打电话的地方:
<?php
$category_meta = get_option( "category_$term_taxonomy_id");
?>
我切换到了这个:
<?php
$category_meta = get_option( "category_$term_id");
?>
这似乎解决了这个问题。但是,以下是一些在类似情况下可能更相关的其他解决方案:
https://en.bainternet.info/tax-meta-class-faq/
另外,请务必阅读Joe Wilson上面发布的内容。再次感谢。