我正在一个wordpress网站上工作,在其中我通过以下代码控制主页的内容:
代码A:
$special_reports = new \WP_Query( [
'post_type' => 'current-special-report',
'orderby' => 'menu_order',
'order' => 'ASC',
'posts_per_page' => 4,
]);
通过以上代码,主页上显示4条帖子。
在某些情况下,我希望显示它。2.在if($data->{"toggle_status"}==3)
时,我希望posts_per_page为 2 。为此,我使用以下逻辑:
代码B:
if($data->{"toggle_status"}==3) {
$special_reports = new \WP_Query( [
'post_type' => 'current-special-report',
'orderby' => 'menu_order',
'order' => 'ASC',
'posts_per_page' => 2,
]);
}
问题陈述:
我想知道,是否还有任何方法可以将代码A和代码B与($data->{"toggle_status"}==3)
逻辑合并。
答案 0 :(得分:4)
只需创建一个根据条件设置的变量即可。
$posts_per_page = 4; //default is set to 4
if($data->toggle_status === 3) {
$posts_per_page = 2; //set to 2 if condition is met
}
$special_reports = new \WP_Query( [
'post_type' => 'current-special-report',
'orderby' => 'menu_order',
'order' => 'ASC',
'posts_per_page' => $posts_per_page,
]);
这样做的另一个好处是,以后可以轻松添加更多条件以最终更改值。
注意:如果$data->toggle_status
返回一个字符串,则此处的if语句可能会略有变化,它将变为:
$data->toggle_status === "3"
$data->toggle_status == 3
答案 1 :(得分:2)
只需使用三元运算符
GUI
答案 2 :(得分:2)
只需定义数组,然后添加或更改数组即可:
$array = [
'post_type' => 'current-special-report',
'orderby' => 'menu_order',
'order' => 'ASC',
'posts_per_page' => 4];
if($data->toggle_status == 3) {
$array['posts_per_page'] = 2;
}
$special_reports = new \WP_Query($array);
有多种方法,但是您可以理解。您也可以使用switch
,或者如果您总是想少显示一个,则:
$array['posts_per_page'] = $data->toggle_status - 1;
答案 3 :(得分:1)
是的
$param = [
'post_type' => 'current-special-report',
'orderby' => 'menu_order',
'order' => 'ASC'
];
if($data->{"toggle_status"}==3) {
$param[ 'posts_per_page' ] = 3;
} else {
$param[ 'posts_per_page' ] = 4;
}
$special_reports = new \WP_Query( $param );