在WordPress搜索中替换Word无法正常工作

时间:2019-09-19 作者:XATA

我想用下面的代码替换wordpress搜索中的单词/字符,虽然它可以工作,但不太好。

E、 G:如果我只搜索var 它取代了varfoo 及其作品properly fine.

但如果我再加上更多的词,它就不起作用了。E、 G:如果我搜索happy varsome var link 可能吧doesn\'t work anymore.

我不知道为什么,下面是代码:

$search_replacements = array(
    \'-\' => \' \',
    \'&\' => \'replace2\',
    \'var\' => \'foo\'
);
function modify_search_term($request_vars) {
    global $search_replacements;
    if (!empty($request_vars[\'s\']) && !empty($search_replacements[$request_vars[\'s\']])) {
        $request_vars[\'s\'] = $search_replacements[$request_vars[\'s\']];
    }
    return $request_vars;
}
add_filter(\'request\', \'modify_search_term\');

1 个回复
SO网友:WebElaine

您的代码会说:“如果搜索项不为空,并且该确切的搜索项位于我的搜索替换数组中,请替换该项。”因此,与此相反:

!empty($search_replacements[$request_vars[\'s\']]

(也就是说,如果[$request_vars[\'s\'] 在我的$search_replacements 阵列)

您需要在每次有人搜索时循环搜索替换数组,并在循环中检查当前搜索词是否是循环中当前关键字的子字符串。如果是这样,则进行替换-但仅替换子字符串,而不是整个字符串。

所以,你需要这样的东西:

<?php
function modify_search_term($request_vars) {
    // Global is usually not ideal - include the terms inside your filter.
    $search_replacements = array(
        \'-\' => \' \',
        \'&\' => \'replace2\',
        \'var\' => \'foo\'
    );
    // Loop through all of the Search Replacements
    foreach($search_replacements as $key => $replacement) {
        // Check for current Key in the Search Term
        if(stripos($request_vars[\'s\'], $key)) {
            // Replace the Key with the Replacement - but don\'t affect the rest of the Search Term
            $request_vars[\'s\'] = str_replace($key, $replacement, $request_vars[\'s\']);
        }
    }
    // Always return
    return $request_vars;
}
add_filter(\'request\', \'modify_search_term\');
?>

相关推荐

Search Results No Link

搜索结果页面未显示用户可以单击的链接。我需要标题作为链接。有人知道问题是什么吗?下面是我的搜索。php和内容。php代码。。。SEARCH.PHP <?php /** * The template for displaying Search Results pages * * @package WordPress * @subpackage Cornerstone * @since Cornerstone 3.0.0 */&#