префикс WordPress $ wpdb-> не работает - PullRequest
0 голосов
/ 04 мая 2018

Парни из службы поддержки Relevanssi дали мне приведенный ниже код, но мне нужно настроить его для настройки мультисайта.

Первый блок кода - это оригинал того, что мне было отправлено, и я уверен, что он работает, а второй - как я пытался конвертировать для многоузлового использования.

Проблема в том, что я не могу заставить ни работать! оба результата приводят к тому, что индекс пропускает все сообщения, но мне нужно проверить, правильно ли я выполнил запрос для настройки мультисайта, поскольку я не слишком знаком с этими запросами ...

add_filter( 'relevanssi_indexing_restriction', 'rlv_hidden_cats' );
function rlv_hidden_cats( $restriction ) {
    global $wpdb;
    $restriction .= " AND post.ID NOT IN (SELECT object_id FROM $wpdb->term_relationships AS tr, $wpdb->term_taxonomy AS tt WHERE tr.term_taxonomy_id = tt.term_taxonomy_id AND tt.parent NOT IN (13, 14, 15)) ";
    return $restriction;
}

......

add_filter( 'relevanssi_indexing_restriction', 'rlv_hidden_cats' );
function rlv_hidden_cats( $restriction ) {
    global $wpdb;
    $restriction .= " AND post.ID NOT IN (SELECT object_id FROM $wpdb->prefix->term_relationships AS tr, $wpdb->prefix->term_taxonomy AS tt WHERE tr.term_taxonomy_id = tt.term_taxonomy_id AND tt.parent NOT IN (13)) ";
    return $restriction;
}

мои изменения происходят в строке "$ limiting"

1 Ответ

0 голосов
/ 04 мая 2018

Для мультисайтов, если это не корневой сайт, вы можете получить префикс с $wpdb->get_blog_prefix($blog_id)

Тогда вы можете сделать

$base_prefix = $wpdb->get_blog_prefix($123);
$restriction .= " AND post.ID NOT IN (SELECT object_id FROM {$base_prefix}term_relationships AS tr, {$base_prefix}term_taxonomy AS tt WHERE tr.term_taxonomy_id = tt.term_taxonomy_id AND tt.parent NOT IN (13, 14, 15)) ";

Если это корневой сайт, вы можете использовать $wpdb->base_prefix.

$restriction .= " AND post.ID NOT IN (SELECT object_id FROM {$wpdb->base_prefix}term_relationships AS tr, {$wpdb->base_prefix}term_taxonomy AS tt WHERE tr.term_taxonomy_id = tt.term_taxonomy_id AND tt.parent NOT IN (13, 14, 15)) ";

Если это текущий веб-сайт в мультисайте:

$restriction .= " AND post.ID NOT IN (SELECT object_id FROM {$wpdb->prefix}term_relationships AS tr, {$wpdb->prefix}term_taxonomy AS tt WHERE tr.term_taxonomy_id = tt.term_taxonomy_id AND tt.parent NOT IN (13, 14, 15)) ";

P.S. $wpdb->prefix и $wpdb->base_prefix являются строками , вы не можете сделать $wpdb->prefix->term_relationships. Однако вы можете сделать что-то вроде $wpdb->term_relationships, которое даст вам полное имя таблицы term_relationships (например, если префикс wp_, вы получите wp_term_relationships)

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