get_option间歇性地失败WordPress

时间:2015-05-04 20:54:51

标签: php mysql wordpress custom-post-type

这是我的第一个问题。

我在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)的数据。我可以根据要求提供其他信息。

2 个答案:

答案 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上面发布的内容。再次感谢。