HTML Entities in Post Title

时间:2013-05-24 作者:Praz

我正在使用通过CRON加载的脚本将帖子插入wordpress。在插入每篇帖子之前,我会检查是否存在标题相同的帖子。下面是我正在使用的代码片段:

if( is_null(get_page_by_title( $page_title, \'OBJECT\', $post_type )) ) {
    // Create post object
    $my_post = array(
        \'post_title\' => "Food & Wine",  // this is example and it actually inserts $page_title.
        \'post_content\' => \'Dummy content\',
        \'post_status\' => \'draft\',
        \'post_author\' => 1,
        \'post_type\' => $post_type,
    );
    // Insert the post into the database
    wp_insert_post( $my_post );
} else {
    echo \'Post already exists.\';
}
现在,这个插入部件工作得很好,但它存储了“&;”作为html实体(&) 在数据库中。因此,在数据库中,帖子标题看起来像“食物和葡萄酒”。在“帖子列表管理”屏幕中,标题与“&;一起看起来很好”一旦我进入编辑屏幕,它就会显示&.

这会导致第一个“if”条件返回TRUE,并插入一个重复的post。我的数据库排序规则类型是“utf8\\U general\\U ci”。这在本地MAMP安装上有效,但在共享主机上失败。

我想知道代码中有什么错误,以及应该如何处理这种情况。是否建议对“post\\u内容”的html实体进行转义?

谢谢

1 个回复
SO网友:s_ha_dum

问题的关键似乎是:

这会导致第一个“if”条件返回TRUE,并插入重复的post。

检查post_name 相反该值通过以下方式规范化为小写和破折号sanitize_title_with_dashes 所以你不会有这个问题。该值也是WordPress强制执行为唯一的值,并用作永久链接。

结束

相关推荐

WordPress mysqli and PDO

WordPress代码库是否使用mysqli或PDO?我知道PDO优于mysqli,但mysqli也不错。此外,PDO优于mysqli的一个特性(即数据库不可知)对WordPress意义不大,因为WordPress总是使用mysql服务器。但PDO支持将参数与数据类型绑定,但mysqli不支持,这是一件好事。我的直觉告诉我WordPress确实使用了mysqli,但我还无法在代码库中看到它。我的第二个问题是,如果WordPress正在使用mysqli,是因为速度问题,还是因为在早些时候(开发WP时),PD