如果存在特殊字符,则GET_PAGE_BY_TITLE()不工作

时间:2015-06-05 作者:Omar Tariq

get\\u page\\u by\\u title在纯文本标题上运行良好。但当涉及到智能引号和符号时,如# 它不起作用。它找不到具有给定标题的帖子。

例如:-

get_page_by_title(\'The #1 Reason to Buy Right Now – THE MONEY!!\', OBJECT, \'post\');
退货NULL.

但有一篇文章的标题是这样的。如果有更好的方法,那就太好了。

4 个回复
SO网友:Frank P. Walentynowicz

标题中的“#”字符不是问题。函数的第二个参数是字符串。改变OBJECT\'OBJECT\'. 仅此而已。

SO网友:mrben522

您可能需要对该标题进行html实体解码。与发现的问题类似here. 尝试以下操作:

get_page_by_title(
    html_entity_decode(\'The #1 Reason to Buy Right Now – THE MONEY!!\'), 
    OBJECT, 
    \'post\',
));

SO网友:Andre de Almeida

如果有人在这一点上遇到障碍,以下是解决方案:

get_page_by_title(esc_html(\'The #1 Reason to Buy Right Now – THE MONEY!!\'), OBJECT, \'post\');
转义值将对特殊字符进行编码以匹配标题。

SO网友:kripto

以防有人需要它。

$post = get_page_by_title(wp_unslash(sanitize_post_field( \'post_title\', \'This is my Title\', 0, \'db\' ) ), OBJECT, \'post\')

结束

相关推荐

在使用诸如‘PRE_GET_POSTS’和‘POSTS_WHERE’之类的过滤器时,确定‘IS_FORWART_PAGE’的正确方法是什么?

在我的网站上,如果用户正在查看静态主页,则应应用多个过滤器。我的理解是is_front_page() 应确定是否确实如此。然而,每当我使用这个函数时,我发现它有时会返回true (例如。posts_orderby) 但大多数情况下,它会回来false (例如。pre_get_posts, posts_fields, posts_join 和posts_where). 不管结果如何,我总是收到以下通知-正在尝试获取{my\\u path}\\wp includes\\query中非对象的属性。php在线4