WordPress的自定义帖子类型变量重叠?

史蒂夫·拉姆斯戴尔

因此,我有两种不同的自定义帖子类型。这两个都有许多多选框。第一个,我能够将这些框中的数据保存到帖子中而不会出现问题。

但是第二个没有用。4个框中的一个已保存其数据,其他表单元素已保存,但其他三个框未保存。盯着代码,来回比较这两个代码,并尝试了许多注释和删除操作之后,我最终出于绝望,重命名了将数据保存到的自定义变量名称。瞧,它奏效了。

所以,我的问题是-为什么?是否发生了一些我没有想到的变量重叠,这没有让我保存在第二个CPT中,因为第一个使用相同的变量名吗?我注意到(通过print_r调用)我的CPT都包含我保存在其中的所有字段。这对我来说似乎有些奇怪,但是我没有深入研究如何存储数据,只是试图将数据取出来。

原始工作文件:

function save_championship(){
    global $post;

    update_post_meta($post->ID, "federations", $_POST["championship_federation"]);
    update_post_meta($post->ID, "weightclasses", $_POST["championship_weightclass"]);
    update_post_meta($post->ID, "genders", $_POST["championship_gender"]);
    update_post_meta($post->ID, "type", $_POST["championship_type"]);
}

以及新的(正在运行的)第二个文件:

function save_roster(){
        global $post;
        update_post_meta($post->ID, "team", $_POST["roster_team"]);

        update_post_meta($post->ID, "fedfilter", $_POST["roster_federation"]);
        update_post_meta($post->ID, "wcfilter", $_POST["roster_weightclass"]);
        update_post_meta($post->ID, "genderfilter", $_POST["roster_gender"]);
        update_post_meta($post->ID, "alignfilter", $_POST["roster_alignment"]);

        $fedtf = $_POST['showfed'] ? true : false;
        update_post_meta($post->ID, "showfed", $fedtf);

        $wctf = $_POST['showwc'] ? true : false;
        update_post_meta($post->ID, "showwc", $wctf);

        $gendertf = $_POST['showgender'] ? true : false;
        update_post_meta($post->ID, "showgender", $gendertf);

        $aligntf = $_POST['showalign'] ? true : false;
        update_post_meta($post->ID, "showalign", $aligntf);
    }

最初,* filter更新的第二个参数是“联合会”,“重量等级”,“性别”和“路线”。那些没有用。过滤器可以。

帮我明白吗?

编辑:我最近发现了wordpress调试模式,并且我已经获得了一些其他信息。

显然,当我保存一个自定义帖子时,它会遍历我的所有自定义帖子页面(因此在保存时会给我一堆“未定义的索引”错误)。它以“无法修改标题信息”结尾,表示与我要保存的自定义帖子类型不同的其他自定义帖子类型。

看来我在这里做错了。我可能会做一些共同的事情吗?我真的不觉得在这里复制每个文件都是有益的,但是如果这是我正在做的常见副作用,那么有人可以指出吗?

谢谢。

史蒂夫·拉姆斯戴尔

弄清楚发生了什么事。显然,save_post无论何时保存任何帖子,而不仅仅是创建的自定义帖子类型,使用钩子都会导致调用该函数。根据我的判断,有两种解决方法。

首先,我去的方式是添加

$post_type = get_post_type($post);
if ( "CPT" != $post_type ) return;  

到我所有自定义帖子类型的save_post函数。我也看到了,但没试过,你可以代替save_post用钩子save_post_cpt钩来代替。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章