Wordpress Пользовательский поиск в бэкэнде не имеет результатов и странного поведения - PullRequest
0 голосов
/ 06 марта 2020

Привет, я пытаюсь исправить функцию поиска друга, который использует собственную тему на WordPress. Поэтому я работаю над этими функциями:

function mb_search_join($join) {
    global $pagenow, $wp_query, $wpdb;

    if(is_admin() && $pagenow=='edit.php' &&
        ($_REQUEST['post_type']=='stelle' || $_REQUEST['post_type']=='praxis' || $_REQUEST['post_type']=='videos') &&
        !empty($wp_query->query_vars['s'])) {

        $join .= "LEFT JOIN $wpdb->postmeta mbmeta ON $wpdb->posts.ID = $wpdb->postmeta.post_id ";
    }

    return $join;
}
function mb_search_where( $where ){
    global $pagenow, $wpdb;
    if(is_admin() && $pagenow=='edit.php'
        && ($_REQUEST['post_type']=='stelle' || $_REQUEST['post_type']=='praxis' || $_REQUEST['post_type']=='videos')
        && (isset($_GET['s']) && $_GET['s'] != '')) {

        if($_REQUEST['post_type']=='stelle') :
            $where = preg_replace("/\(\s*".$wpdb->posts.".post_title\s+LIKE\s*(\'[^\']+\')\s*\)/",
            "(".$wpdb->posts.".post_title LIKE $1)
            OR (mbmeta.meta_key='wpcf-jobtyp' AND mbmeta.meta_value LIKE $1)
            OR (mbmeta.meta_key='wpcf-position' AND mbmeta.meta_value LIKE $1)
            OR (mbmeta.meta_key='wpcf-top-job' AND mbmeta.meta_value LIKE $1)
            OR (mbmeta.meta_key='wpcf-referenznummer' AND mbmeta.meta_value LIKE $1)
            OR (mbmeta.meta_key='wpcf-eintrittsdatum' AND mbmeta.meta_value LIKE $1)
            OR (mbmeta.meta_key='wpcf-bemerkung' AND mbmeta.meta_value LIKE $1)
            OR (mbmeta.meta_key='wpcf-zusatzqualifikation' AND mbmeta.meta_value LIKE $1)
            OR (mbmeta.meta_key='wpcf-name' AND mbmeta.meta_value LIKE $1)
            OR (mbmeta.meta_key='wpcf-geschlecht' AND mbmeta.meta_value LIKE $1)
            OR (mbmeta.meta_key='wpcf-kontaktdaten' AND mbmeta.meta_value LIKE $1)
            OR (mbmeta.meta_key='wpcf-email-adresse' AND mbmeta.meta_value LIKE $1)
            OR (mbmeta.meta_key='wpcf-honorarvereinbarung' AND mbmeta.meta_value LIKE $1)
            ", $where );
//      echo $where;
        endif;

...
}

В настоящее время поиск никогда не дает никаких результатов. Так что я сделал эхо $, где посмотреть, что внешний вид запроса, как и это результат для поиска ввода «1051910519»:

post_title LIKE '{efe1f890da2e4727abec314a3544bec82f712bf65ccd04e66d539f09873d27ca}1051910519{efe1f890da2e4727abec314a3544bec82f712bf65ccd04e66d539f09873d27ca}') OR (mbmeta.meta_key='wpcf-jobtyp' AND mbmeta.meta_value LIKE
 '{efe1f890da2e4727abec314a3544bec82f712bf65ccd04e66d539f09873d27ca}1051910519{efe1f890da2e4727abec314a3544bec82f712bf65ccd04e66d539f09873d27ca}') OR (mbmeta.meta_key='wpcf-position' AND mbmeta.meta_value LIKE 
'{efe1f890da2e4727abec314a3544bec82f712bf65ccd04e66d539f09873d27ca}1051910519{efe1f890da2e4727abec314a3544bec82f712bf65ccd04e66d539f09873d27ca}') OR (mbmeta.meta_key='wpcf-top-job' AND mbmeta.meta_value ....

Где «efe1f890da2e4727abec314a3544bec82f712bf65ccd04e66d539f09873d27ca} 1051910519 {efe1f890da2e4727abec314a3544bec82f712bf65ccd04e66d539f09873d27ca» взялось? Что происходит, почему это не работает. Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...