Estou usando get_bookmarks()
para obter links de favoritos. Posso obter links postados em cat A ou cat B, mas eu só quero links em A e B .
Exemplo do que preciso:
Eu tenho três categorias de link cat#1
, cat#2
, cat#3
.
Eu preciso obter links em cat#1 AND cat#2
não cat#1 OR cat#2
(interseção).
Atualmente estou usando:
$links = get_bookmarks(array('category' => $term_ids));
O que não funciona devido a como get_bookmarks()
funciona .
$category_query = '';
$join = '';
if ( !empty($category) ) {
$incategories = preg_split('/[\s,]+/',$category);
if ( count($incategories) ) {
foreach ( $incategories as $incat ) {
if (empty($category_query))
$category_query = ' AND ( tt.term_id = ' . intval($incat) . ' ';
else
$category_query .= ' OR tt.term_id = ' . intval($incat) . ' ';
}
}
}
Nota do Editor: Adicionando código de amostra para facilitar o entendimento - Marcadores são consultados com uma cláusula OR
por padrão. Como eles são recuperados via $wpdb->get_result()
, não há solução fácil na filtragem, além do resultado consultado.
Qualquer ajuda ou ideia de abordagem diferente seria muito apreciada.
UPDATE
Eu estou tentando fazer uma nova função fora da função get_bookmarks ().
Eu mudei o código mostrado acima para abaixo (alterado para OU). Mas agora nada está retornando. Talvez eu precise mudar o SQL para outra coisa. Então, vou precisar de conselhos sobre isso.
if ( !empty($category) ) {
$incategories = preg_split('/[\s,]+/',$category);
if ( count($incategories) ) {
foreach ( $incategories as $incat ) {
if (empty($category_query))
$category_query = ' AND ( tt.term_id = ' . intval($incat) . ' ';
else{
// sisir
$category_query .= ' AND tt.term_id = ' . intval($incat) . ' ';
}
}
}
}