我有一个使用自定义字段和Slick 旋转木马,使用下面的代码。
<?php $entries = get_post_meta( get_the_ID(), \'_mysite_homepage_slider_group\', true );
foreach ( (array) $entries as $key => $entry ) {
$img = $title = $url = $desc = \'\';
if ( isset( $entry[\'_mysite_homepage_slider_title\'] ) )
$title = esc_html( $entry[\'_mysite_homepage_slider_title\'] );
if ( isset( $entry[\'_mysite_homepage_slider_caption\'] ) )
$desc = wpautop( $entry[\'_mysite_homepage_slider_caption\'] );
if ( isset( $entry[\'_mysite_homepage_slider_url\'] ) )
$url = esc_html( $entry[\'_mysite_homepage_slider_url\'] );
if ( isset( $entry[\'_mysite_homepage_slider_image_id\'] ) ) {
$img = wp_get_attachment_image_url( $entry[\'_mysite_homepage_slider_image_id\'], \'full\');
}
} ?>
我希望用户能够通过单击后端的复选框来禁用单个幻灯片。
很简单吧?
因此,我添加了一个复选框,并编写了此代码以插入到我的代码片段中。它检查是否单击了复选框。我试着把它放在foreach
线条,如下所示:
foreach ( (array) $entries as $key => $entry ) {
// Display slides if checkbox is NOT clicked (e.g., is empty)
if ( empty( $entry[\'_mysite_homepage_slider_checkbox\'] ) ) {
$img = $title = $url = $desc = \'\';
(...)
}
这是可行的-幻灯片没有显示在页面上-但仍有一些东西通过。正在创建重复幻灯片。
例如,后端有4个幻灯片。第四个复选框已选中。在前端,幻灯片#3显示两次。代码似乎正在输出以下内容:
第1张幻灯片第2张幻灯片第3张幻灯片(再次!)我哪里出错了?
EDIT: Final code snippet with answer, 对于将来可能会发现这一点有用的任何人。
最合适的回答,由SO网友:Tim Malone 整理而成
您的问题中缺少一些代码—您的幻灯片实际输出的代码。
这个foreach
您发布的循环只设置变量,实际输出发生在循环下方。
所以,在第四张幻灯片中,您所做的就是避免设置变量。。。因此,幻灯片仍然是输出的,但使用第三张幻灯片的变量。
你的if
复选框逻辑看起来正常;您只需要在输出幻灯片的实际代码中包含逻辑。