You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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代码,推荐用短代码实现:
    1. 打开主题的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' );
    
    1. 在页面/文章编辑器中插入短代码:[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; ?>

关键修复点

  1. 添加else分支:在<?php endif; ?>前加入<?php else : ?>块,显示无内容提示。
  2. 检查查询参数:
    • 如果videos是自定义文章类型的自定义分类法,不能用category_name,要换成tax_query(代码中已注释示例,替换成你的实际分类法名称)。
    • 确认post_type的videos已正确注册,且注册时设置了public => true,否则无法被查询到。
    • 检查category_name的slug是否正确,默认分类的slug可以在后台「文章-分类」中查看。

内容的提问来源于stack exchange,提问作者student101

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 16:35:05