为什么页面标题中的&符导致此foreach循环出现问题?

时间:2018-03-20 15:27:33

标签: php wordpress

这可能非常深入,但我会尽我所能!

我正在我的Wordpress网站上显示所有相关页面标题的下拉列表,这些标题与我编写的插件中的一些照片集相关联,并且它们的工作非常好。

除了两个标题,两个标题都包含&符号(未在列表中显示),并提供错误Notice: Trying to get property of non-object in view_all.php on line 65

代码的一部分,包括第65行(下拉元素)

$db = $wpdb->get_results('SELECT * FROM wp_before_after ORDER BY ID DESC');
$patientsArray = array();
$proceduresArray = array();

<select id="filterProcedure_dropdown" class="form-control">
    <option value="noFilter">Filter by procedure</option>
    <?php foreach( $db as $filterProcedure ) {
        if($filterProcedure->procedureID != 0) {
            if( in_array( get_the_title( $filterProcedure->procedureID ), $proceduresArray ) ) {
                continue;
            }
            $proceduresArray[] = get_the_title( $filterProcedure->procedureID );
        }
    }
    sort( $proceduresArray );
    foreach( $proceduresArray as $filterProcedure ) {
        var_dump($filterProcedure, OBJECT);
        echo '<option value="'.get_page_by_title($filterProcedure, OBJECT)->ID.'">'.get_page_by_title($filterProcedure, OBJECT)->post_title.'</option>'; // LINE 65
    } ?>
</select>

所以我想的问题是,为什么页面标题中的&符导致问题,我最好的解决方法是什么?

我在Wordpress Trac https://core.trac.wordpress.org/ticket/25157中发现了这一点 - 据说所有人都说这已得到修复,但很明显它仍然会引起一些问题?我可以以某种方式重新打开这张票吗?

1 个答案:

答案 0 :(得分:0)

我认为您需要在调用get_page_by_path之前清理标题,如下所示:

get_page_by_path(sanitize_title($filterProcedure), OBJECT)->ID