我在模板文件中设置了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);
};
最合适的回答,由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);
}