【问题标题】:code checks one checkbox or the other, but not both代码检查一个复选框或另一个,但不是同时检查两者
【发布时间】:2013-02-26 09:28:29
【问题描述】:

所以基本上,我有一个在 wordpress 上创建帖子时运行的函数。我通过添加以下代码修改了这个函数。

$episodeID = $_POST['item_meta'][137];
$episodeVersion = $_POST['item_meta'][357];



if ($episodeVersion == "Subbed") { 
    $value = array("Subbed");

    update_field('field_48', $value, $episodeID);

} 
else if ($episodeVersion == "Dubbed") { 
    $value = array("Dubbed");

    update_field('field_48', $value, $episodeID);



}

这段代码基本上是说,如果该帖子中某个字段的值为“Subbed”,则通过选中“Subbed”复选框来更新另一个复选框字段。如果是“配音”,则通过选中“配音”复选框来更新复选框字段。

这工作得很好,但是没有时间同时选中这两个复选框。如果我添加一个带有配音的帖子,它会选中配音,然后如果我添加一个带有 Subbed 的帖子,它将取消选中配音并选中已配音。

所以基本上,我怎样才能使它实际上不会取消选中已经检查的任何内容。那么我应该用什么来检查复选框是未选中还是选中?某种类型的布尔真/假?

【问题讨论】:

  • 如果 update_field 只是在字段上设置了一个检查,那么你可以去掉“else”关键字,这样如果 Subbed 它将检查 subbed,然后检查是否配音然后检查配音。当你拥有它时,这两者是相互排斥的,所以只有一个或另一个,而当你同时拥有两个 if 时,两者都可以同时发生。
  • 我想这在逻辑上是有道理的。仅当 if 条件在一篇不会发生的帖子中为真时。这意味着一篇帖子只能有 Subbed 或 Dubbed。但是它正在更新的字段的值可以检查 Subbed 和 Dubbed。因此,如果有一个帖子以 Subbed 值提交,然后另一个帖子作为“配音”提交,则应在另一个帖子上选中两个复选框。但这不会发生,只检查一个或另一个。
  • 那么需要更多代码,例如您的 html 以及 update_field 的实现方式。

标签: php wordpress checkbox


【解决方案1】:

好的,所以我能够操纵一些代码并最终让它工作。

我所要做的就是在执行配音的 if 语句时检查 Subbed 复选框是否已被选中,反之亦然。

这是更新的代码

$episodeID = $_POST['item_meta'][137];
$episodeVersion = $_POST['item_meta'][357];



if ($episodeVersion == "Subbed" && !(get_field('episode_sdversion') && in_array('Subbed', get_field('episode_sdversion', $episodeID))) ) { 
    if (get_field('episode_sdversion') && in_array( 'Dubbed', get_field('episode_sdversion'))) {    
        $value = array("Subbed", "Dubbed");         
    } else {
        $value = array("Subbed");
    }       

    update_field('field_48', $value, $episodeID);

} 
if ($episodeVersion == "Dubbed" && !(get_field('episode_sdversion') && in_array('Dubbed', get_field('episode_sdversion', $episodeID))) ) { 

    if (get_field('episode_sdversion') && in_array( 'Subbed', get_field('episode_sdversion'))) {    
        $value = array("Subbed", "Dubbed");         
    } else {
        $value = array("Dubbed");
    }

    update_field('field_48', $value, $episodeID);



}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    • 2015-10-03
    • 2021-11-11
    相关资源
    最近更新 更多