Как создать запрос, чтобы выбрать все комментарии из бд, но у которых может как присутствовать, так и отсутствовать мета-поле attachmentId
?
Использую эту функцию:
function kama_recent_comments( $args = array() ){
global $wpdb;
$def = array(
'limit' => 10, // сколько комментов выводить.
'ex' => 45, // n символов. Обрезка текста комментария.
'term' => '', // id категорий/меток. Включить(5,12,35) или исключить(-5,-12,-35) категории. По дефолту - из всех категорий.
'gravatar' => '', // Размер иконки в px. Показывать иконку gravatar. '' - не показывать.
'user' => '', // id юзеров. Включить(5,12,35) или исключить(-5,-12,-35) комменты юзеров. По дефолту - все юзеры.
'echo' => 1, // выводить на экран (1) или возвращать (0).
'comm_type' => '', // название типа комментария
'meta_query' => '', // WP_Meta_Query
'meta_key' => '', // WP_Meta_Query
'meta_value' => '', // WP_Meta_Query
'url_patt' => '', // оптимизация ссылки на коммент. Пр: '%s?comments#comment-%d' плейсхолдеры будут заменены на $post->guid и $comment->comment_ID
);
$args = wp_parse_args( $args, $def );
extract( $args );
$AND = '';
// ЗАПИСИ
if( $term ){
$cats = explode(',', $term );
$cats = array_map('intval', $cats );
$CAT_IN = ( $cats[ key($cats) ] > 0 ); // из категорий или нет
$cats = array_map('absint', $cats ); // уберем минусы
$AND_term_id = 'AND term_id IN ('. implode(',', $cats) .')';
$posts_sql = "SELECT object_id FROM $wpdb->term_relationships rel LEFT JOIN $wpdb->term_taxonomy tax ON (rel.term_taxonomy_id = tax.term_taxonomy_id) WHERE 1 $AND_term_id ";
$AND .= ' AND comment_post_ID '. ($CAT_IN ? 'IN' : 'NOT IN') .' ('. $posts_sql .')';
}
// ЮЗЕРЫ
if( $user ){
$users = explode(',', $user );
$users = array_map('intval', $users );
$USER_IN = ( $users[ key($users) ] > 0 );
$users = array_map('absint', $users );
$AND .= ' AND user_id '. ($USER_IN ? 'IN' : 'NOT IN') .' ('. implode(',', $users) .')';
}
// WP_Meta_Query
$META_JOIN = '';
if( $meta_query || $meta_key || $meta_value ){
$mq = new WP_Meta_Query( $args );
$mq->parse_query_vars( $args );
if( $mq->queries ){
$mq_sql = $mq->get_sql('comment', $wpdb->comments, 'comment_ID' );
$META_JOIN = $mq_sql['join'];
$AND .= $mq_sql['where'];
}
}
$sql = $wpdb->prepare("SELECT * FROM $wpdb->comments LEFT JOIN $wpdb->posts ON (ID = comment_post_ID ) $META_JOIN
WHERE comment_approved = '1' AND comment_type = %s $AND ORDER BY comment_date_gmt DESC LIMIT %d", $comm_type, $limit );
//die( $sql );
$results = $wpdb->get_results( $sql );
if( ! $results ) return 'Комментариев нет.';
return $results;
}
но если допустим создать такой запрос:
$arr = array(
'meta_key' => 'attachmentId'
);
$res = kama_recent_comments($arr);
то выберутся только комментарии, у которых есть данное мета-поле
а если без аргументов:
$res = kama_recent_comments();
то выберутся все комментарии, но будет отсутствовать данное мета-поле.
Имеется блок, допустим это <div class="myclass">, с этого блока я вытаскиваю заголовки:
Ищу способы формирования счёта 1С Бухгалтерии на стороне PHP, чтобы его потом можно было импортировать в программу или saas версиюВозможно ли вообще...