php - get_option 间歇性地使 WordPress 失败

标签 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)的数据。我可以根据要求提供更多信息。

最佳答案

没有回答你的问题,但你知道 WP 4.2+ 发生了很大的变化,他们将拆分分类术语,这样如果分类术语匹配,它们就不会共享相同的术语 ID。

请查看下面的链接,了解有关如何解决此问题的一些详细信息

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/

关于php - get_option 间歇性地使 WordPress 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30039791/

相关文章:

mysql - 如何在 MySQL 中排除具有特定 ID 的用户

PHP 注册和登录表单&电子邮件验证/邮件服务器设置

javascript - 将文本替换为 HTML 文件中的 html 标签

PHP OOP 登录/注册系统

wordpress - 如何在 Wordpress 中创建自定义用户角色

php - 如何使用 .htaccess 重定向所有 API 请求,同时保持 Assets 请求完好无损?

php - 在 functions.php 中获取 protected 帖子的密码

PHP MySQL 设置连接超时

c# - join for insert语句mysql语法

MySQL 在 GROUPing BY 时压缩空字段