如何在WordPress编辑器添加if-then-else逻辑?代码与插件疑问
WordPress 问题解决方案
一、在任意WordPress编辑器中添加if-then-else逻辑
是否需要插件?
不需要额外插件,通过原生PHP代码或短代码就能实现。如果是在可视化编辑器里插入代码,用自带的「代码块」或「自定义HTML块」即可。
代码放置位置及实现方式
- 主题模板文件:直接在主题的模板文件(比如
page.php、single.php、自定义页面模板page-video.php等)中编写PHP的if-then-else逻辑。示例:
<?php if ( is_user_logged_in() ) : ?> <p>欢迎登录用户!</p> <?php else : ?> <p>请先登录查看内容。</p> <?php endif; ?>
- 页面/文章编辑器:默认编辑器无法直接执行PHP代码,推荐用短代码实现:
- 打开主题的
functions.php文件,注册一个包含逻辑的短代码:
function custom_logic_shortcode() { ob_start(); // 这里写你的if-then-else逻辑 if ( get_current_user_id() == 1 ) : ?> <p>你是管理员!</p> <?php else : ?> <p>你是普通用户。</p> <?php endif; return ob_get_clean(); } add_shortcode( 'custom_logic', 'custom_logic_shortcode' );- 在页面/文章编辑器中插入短代码:
[custom_logic]即可展示逻辑结果。
- 打开主题的
二、修复WP_Query循环问题
你的循环代码有两个核心问题:缺少无内容提示分支、可能存在查询参数错误导致循环失效。
修改后的完整代码
<?php $args = array( 'post_type' => 'videos', 'posts_per_page' => -1, 'order' => 'DESC', // 注意:如果"videos"是自定义文章类型的自定义分类法,需替换成tax_query // 'tax_query' => array( // array( // 'taxonomy' => 'video_category', // 替换成你的自定义分类法名称 // 'field' => 'slug', // 'terms' => 'videos', // ), // ), 'category_name' => 'videos' // 仅当"videos"是默认分类法的分类slug时保留 ); $the_query = new WP_Query( $args ); ?> <?php if ( $the_query->have_posts() ) : ?> <div class="superhero-container"> <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?> <div class="superhero"> <?php if ( get_the_post_thumbnail() ) : /* 有特色图则显示 */ ?> <?php the_post_thumbnail(); ?> <?php endif; ?> <h2><?php the_title(); ?></h2> <?php the_content(); ?> </div> <?php endwhile; ?> </div> <?php wp_reset_postdata(); ?> <?php else : ?> <!-- 添加无内容提示 --> <p>Sorry nothing found</p> <?php endif; ?>
关键修复点
- 添加else分支:在
<?php endif; ?>前加入<?php else : ?>块,显示无内容提示。 - 检查查询参数:
- 如果
videos是自定义文章类型的自定义分类法,不能用category_name,要换成tax_query(代码中已注释示例,替换成你的实际分类法名称)。 - 确认
post_type的videos已正确注册,且注册时设置了public => true,否则无法被查询到。 - 检查
category_name的slug是否正确,默认分类的slug可以在后台「文章-分类」中查看。
- 如果
内容的提问来源于stack exchange,提问作者student101
相关产品推荐
相关产品推荐

