使用多个变量将类别分配给数组

时间:2012-12-09 作者:Eckstein

我在模板文件中设置了php来检查表单,看看是否选择了5个类别中的1个或多个。根据所选的查询,我希望更改我使用的自定义查询,因为“category\\u name”的数组会根据所选内容进行更改。

我已经从表单中定义了变量,但我不知道如何将多个变量放入一个数组中。下面是我尝试做的一个例子:

        if (isset($_POST[\'showvideo\']) && ($_POST[\'showvideo\'] == \'true\')) :
        $video=\'user-video,\';
    endif;
    if (isset($_POST[\'showimage\']) && ($_POST[\'showimage\'] == \'true\')) :
        $image=\'user-image,\';
    endif;
    if (isset($_POST[\'showaudio\']) && ($_POST[\'showaudio\'] == \'true\')) :
        $audio=\'user-audio,\';
    endif;
    if (isset($_POST[\'showwriting\']) && ($_POST[\'showwriting\'] == \'true\')) :
        $writing=\'user-writing,\';
    endif;
    if (isset($_POST[\'showevent\']) && ($_POST[\'showevent\'] == \'true\')) :
        $event=\'user-event\';
    endif;
然后,我不知道如何将这些值中的每一个都放入一个正确的数组中,以便在自定义查询中用作“category\\u name”数组。

这显然是错误的:

$upostcat= array ($video . $image . $audio . $writing . $event);
有人能帮我怎么做吗?

根据下面的答案更新了工作代码(谢谢!):

    if (isset($_POST[\'showvideo\']) && ($_POST[\'showvideo\'] == \'true\')) {
    $cats[]=\'user-video\';
} elseif (isset($_POST[\'showimage\']) && ($_POST[\'showimage\'] == \'true\')) {
    $cats[]=\'user-image\';
} elseif (isset($_POST[\'showaudio\']) && ($_POST[\'showaudio\'] == \'true\')) {
    $cats[]=\'user-audio\';
} elseif (isset($_POST[\'showwriting\']) && ($_POST[\'showwriting\'] == \'true\')) {
    $cats[]=\'user-writing\';
} elseif (isset($_POST[\'showevent\']) && ($_POST[\'showevent\'] == \'true\')) {
    $cats[]=\'user-event\';
};

if (!empty($cats) {
  $upostcat = implode(\',\',$cats);
};

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

要生成数组,请用逗号分隔值,而不是用句点连接。

$upostcat= array (
  $video,
  $image,
  $audio,
  $writing,
  $event
);
这部分是纯PHP。但是,我注意到您想要使用category_name “阵列”。如果你说的是WP_Query, category_name 不接受数组--顺便说一下,这是您问题中唯一的WordPress部分。您实际需要的是一个字符串,其值由逗号分隔,like this from the Codex:

$query = new WP_Query( \'category_name=staff,news\' );
为此,您确实需要连接。您所做的大部分工作都应该是有效的,但您很可能会有一个尾随逗号。假设前四个中的一个或多个已设置,而最后一个未设置。有一种更简单的方法。

if (isset($_POST[\'showvideo\']) && ($_POST[\'showvideo\'] == \'true\')) {
    $cats[]=\'user-video\';
} 
if (isset($_POST[\'showimage\']) && ($_POST[\'showimage\'] == \'true\')) {
    $cats[]=\'user-image\';
} 
if (isset($_POST[\'showaudio\']) && ($_POST[\'showaudio\'] == \'true\')) {
    $cats[]=\'user-audio\';
} 
if (isset($_POST[\'showwriting\']) && ($_POST[\'showwriting\'] == \'true\')) {
    $cats[]=\'user-writing\';
} 
if (isset($_POST[\'showevent\']) && ($_POST[\'showevent\'] == \'true\')) {
    $cats[]=\'user-event\';
};
if (!empty($cats)) {
  $upostcat = implode(\',\',$cats);
}

结束

相关推荐

如何删除unctions.php中发布的自动化代码?

有一种主题黑客或蠕虫在网上传播,它将此代码添加到所有函数中。php文件。这发生在我的本地服务器上。这是密码-http://pastebin.com/AUsHUng1如何找到创建它的主题黑客?还是蠕虫?UPDATE:我发现这一行:$elem == substr(__FILE__,-13)){ 检查functions.php 文件(因为它是唯一一个有13个字母并使用文件的文件)和fputs() 函数在所有functions.php 文件。我已经删除了代码的所有实例,希望它不会在另一个主题激活上复制自