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

WordPress如何将所有已发布页面显示为下拉选项?代码故障求助

WordPress已发布页面下拉菜单修复方案

你的代码核心问题是**get_pages()返回的是WP_Post对象数组,而非关联数组**,直接用$name['name']无法正确读取页面数据,这是显示异常的根源。以下是修正后的实现方案:

修正代码

<div class="header-right">
    <?php
    // 获取所有已发布页面,返回WP_Post对象集合
    $published_pages = get_pages([
        'post_status' => 'publish',
        'post_type'   => 'page',
        'sort_column' => 'post_title' // 按页面标题排序,可根据需求调整
    ]);
    ?>
    <select name="per1" id="per1" onchange="this.value && (window.location.href = this.value)">
        <option selected>Choose one</option>
        <?php foreach ($published_pages as $page) : ?>
            <option value="<?php echo esc_url(get_permalink($page->ID)); ?>">
                <?php echo esc_html($page->post_title); ?>
            </option>
        <?php endforeach; ?>
    </select>
</div>

关键修复点说明

  • 移除了无用的$pages和$array_pages变量,简化逻辑
  • 使用对象属性访问(->)替代数组下标,比如$page->post_title获取页面标题,$page->ID获取页面ID
  • 添加esc_url()和esc_html()做内容转义,符合WordPress安全开发规范,避免XSS风险
  • 可选添加onchange事件,实现选择页面后自动跳转的功能(不需要可删除该属性)
  • 明确指定post_type为page,避免意外获取其他自定义类型内容
  • 通过sort_column参数控制页面排序顺序,可选值包括menu_order(按后台页面顺序)、post_date(按发布时间)等

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 15:45:33