[ 'forum', 'topic' ],
's' => $keyword,
] );
$all_results_count = $all_results->found_posts;
if ( $all_results_count > 0 ) {
$all_nsoresult = 'data-result=';
} else {
$all_nsoresult = 'data-noresult=';
}
// Forum query
$forum_query = new WP_Query( [
'post_type' => [ 'forum', 'topic' ],
's' => $keyword,
] );
$forum_count = $forum_query->found_posts;
if ( $forum_count > 0 ) {
$forum_nsoresult = 'data-result=';
} else {
$forum_nsoresult = 'data-noresult=';
}
?>
';
$forum = new WP_Query( [
'post_type' => 'forum',
's' => $keyword,
'posts_per_page' => 5,
] );
if ( $forum->have_posts() ) :
echo '
' . esc_html__( 'Forums', 'forumax' ) . '
';
while ( $forum->have_posts() ) : $forum->the_post();
?>
'topic',
's' => $keyword,
'posts_per_page' => 5,
] );
if ( $topics->have_posts() ) :
echo '
' . esc_html__( 'Topics', 'forumax' ) . '
';
while ( $topics->have_posts() ) : $topics->the_post();
?>
';
endif;
echo '
' . esc_html__( 'Not Found Result!', 'forumax' ) . '
';
echo '
';
wp_die();
}
/**
* Forum Search results
*/
add_action( 'wp_ajax_forumax_search_data_forum', 'forumax_search_data_forum' );
add_action( 'wp_ajax_nopriv_forumax_search_data_forum', 'forumax_search_data_forum' );
/**
* Search data forum.
*/
function forumax_search_data_forum() {
// Check nonce
check_ajax_referer( 'forumax-nonce', 'nonce' );
// Sanitize keyword
$keyword = isset( $_POST['keyword'] ) ? sanitize_text_field( $_POST['keyword'] ) : '';
// Forums query
if ( class_exists( 'bbPress' ) ) :
echo '';
$forum = new WP_Query( [
'post_type' => 'forum',
's' => $keyword,
'posts_per_page' => 5,
] );
if ( $forum->have_posts() ) :
echo '
' . esc_html__( 'Forums', 'forumax' ) . '
';
while ( $forum->have_posts() ) : $forum->the_post();
?>
'topic',
's' => $keyword,
'posts_per_page' => 5,
] );
if ( $topics->have_posts() ) :
echo '
' . esc_html__( 'Topics', 'forumax' ) . '
';
while ( $topics->have_posts() ) : $topics->the_post();
?>
';
endif;
wp_die();
}
/**
* AJAX handler to fetch forums for Gutenberg block editor
* Used by the Single Forum block to populate the forum selector dropdown
*/
add_action( 'wp_ajax_bbpc_get_forums', 'forumax_get_forums_ajax' );
/**
* Get forums ajax.
*/
function forumax_get_forums_ajax() {
// Verify nonce for security
check_ajax_referer( 'forumax-nonce', 'nonce' );
if ( ! current_user_can( 'edit_posts' ) ) {
wp_send_json_error( 'Unauthorized' );
}
// Get all forums
$forums = new \WP_Query( [
'post_type' => 'forum',
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'ASC',
] );
$forum_list = [];
if ( $forums->have_posts() ) {
while ( $forums->have_posts() ) {
$forums->the_post();
$forum_list[] = [
'id' => get_the_ID(),
'title' => get_the_title(),
];
}
wp_reset_postdata();
}
wp_send_json_success( $forum_list );
}
/**
* Loading Post
*/
add_action( 'wp_ajax_forumax_loading_post', 'forumax_loading_post' );
add_action( 'wp_ajax_nopriv_forumax_loading_post', 'forumax_loading_post' );
/**
* Loading forum posts
*
* @return void
*/
function forumax_loading_post() {
// Check nonce
if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['nonce'] ) ), 'forumax-nonce' ) ) {
wp_die( '-1' );
}
$type = isset( $_POST['type'] ) ? sanitize_text_field( wp_unslash( $_POST['type'] ) ) : '';
$post_in = isset( $_POST['a_t_id'] ) ? sanitize_text_field( wp_unslash( $_POST['a_t_id'] ) ) : '';
$count = isset( $_POST['count'] ) ? sanitize_text_field( wp_unslash( $_POST['count'] ) ) : '';
$parent = isset( $_POST['parent'] ) ? sanitize_text_field( wp_unslash( $_POST['parent'] ) ) : '';
$paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1;
$q = [
'post_type' => 'topic',
'post_parent' => $parent,
'order' => 'DESC',
'orderby' => 'post_date',
'post_status' => 'publish',
'posts_per_page' => get_option( '_bbp_topics_per_page', 10 ),
'ignore_sticky_posts' => 1,
];
if ( 'author' === $type ) {
$auth_ids = [
'author' => $post_in,
];
$q = array_merge( $q, $auth_ids );
} elseif ( 'tag' === $type ) {
$tax_query[] = [
'taxonomy' => 'topic-tag',
'field' => 'term_id',
'terms' => $post_in,
];
}
$tax_query[] = [
'taxonomy' => 'post_format',
'field' => 'slug',
'terms' => [ 'post-format-quote', 'post-format-link' ],
'operator' => 'NOT IN',
];
if ( ! empty( $tax_query ) ) {
$tax_query = array_merge( [ 'relation' => 'AND' ], $tax_query );
$q = array_merge( $q, [ 'tax_query' => $tax_query ] );
}
$query = new WP_Query( $q );
if ( $query->have_posts() ) :
echo '