WordPress:将str_replace应用于WP_Query搜索结果

时间:2016-11-28 23:01:13

标签: php wordpress

我正在尝试在其内容中收到包含当前帖子标题的所有帖子。

我几乎已经实现了这一点,除了一件事:对于在其标题中包含撇号或右引号的帖子,它不会返回任何结果。虽然包含带撇号或右引号的当前搜索词的帖子肯定存在。

以下是代码:

$title = '"'.str_replace(array("'","’","'","’"),
array("","","",""),
wp_strip_all_tags(get_the_title())).'"';
$args = array(
    's'                 => $title,
    'cat'               => 48,
    'posts_per_page'    => -1,
    'orderby'           => date,
    'order'             => desc,
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
    while ( $query->have_posts() ) { $query->the_post();
    echo the_time("Y.m.d");
    echo ': ';
    echo the_title();
    echo '<br />';
    }
}

所以我的想法是在搜索词和WP_Query搜索结果中删除所有撇号和所有正确的引号。

可以看出我已成功(至少我认为如此)将str_replace应用于搜索字词,现在又返回

  

我是一个糟糕的程序员

而不是

  

我是一个糟糕的程序员

但我完全不知道如何将相同的str_replace应用于WP_Query结果。

所以我需要你的帮助。

1 个答案:

答案 0 :(得分:1)

作为临时(但可能是同时最好的)解决方案我运行以下SQL查询

UPDATE wp_posts SET post_content=REPLACE(post_content,'\&\#039\;','\'');
UPDATE wp_posts SET post_content=REPLACE(post_content,'\&\#8217\;','\'');
UPDATE wp_posts SET post_content=REPLACE(post_content,'\’','\'');

更改我现有的帖子,然后冗余更改

$title = '"'.str_replace(array("'","’","&#39;","&#8217;"),
array("","","",""),
wp_strip_all_tags(get_the_title())).'"';

$title = '"'.str_replace(array("’","&#39;","&#8217;"),
array("'","'","'"),
wp_strip_all_tags(get_the_title())).'"';

似乎我已经达到了预期的效果,至少目前是这样。