Estoy usando get_bookmarks()
para obtener enlaces de marcadores. Puedo obtener los enlaces publicados en el gato A or gato B, pero solo quiero los enlaces en ambos A y B .
Ejemplo de lo que necesito:
Tengo tres categorías de enlaces cat#1
, cat#2
, cat#3
.
Necesito obtener enlaces tanto en cat#1 AND cat#2
no cat#1 OR cat#2
(intersección).
Actualmente estoy usando:
$links = get_bookmarks(array('category' => $term_ids));
Lo que no funciona debido a cómo 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 del editor: Agregar código de muestra para una comprensión más fácil: los marcadores se consultan con una cláusula OR
de forma predeterminada. A medida que se recuperan a través de $wpdb->get_result()
, no hay una solución fácil para filtrar aparte del resultado consultado.
Cualquier ayuda o idea de enfoque diferente sería muy apreciada.
ACTUALIZAR
Estoy tratando de hacer una nueva función de la función get_bookmarks ().
Cambié el código que se muestra arriba a esto a continuación (cambiado de OR a AND). Pero ahora nada está volviendo. Tal vez necesito cambiar el SQL a otra cosa. Por lo tanto, necesitaré consejos sobre esto.
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) . ' ';
}
}
}
}