post_type ) { return null; } return $post; } /** * Get all ads. * * @param array $args Optional query args. * @return array Array of WP_Post objects. */ public static function get_all( $args = [] ) { $defaults = [ 'post_type' => self::POST_TYPE, 'posts_per_page' => -1, 'post_status' => 'any', 'orderby' => 'date', 'order' => 'DESC', ]; $query = new \WP_Query( array_merge( $defaults, $args ) ); return $query->posts; } /** * Get ad type. * * @param int $id Ad ID. * @return string Type (image, code, plain). */ public static function get_type( $id ) { $type = get_post_meta( $id, '_advajra_type', true ); return $type ?: 'plain'; } /** * Get ad image URL. * * @param int $id Ad ID. * @return string Image URL or empty string. */ public static function get_image( $id ) { return get_post_meta( $id, '_advajra_image', true ) ?: ''; } /** * Get ad click URL. * * @param int $id Ad ID. * @return string URL or empty string. */ public static function get_url( $id ) { return get_post_meta( $id, '_advajra_url', true ) ?: ''; } /** * Check if ad should open in new tab. * * @param int $id Ad ID. * @return bool */ public static function get_open_new_tab( $id ) { return (bool) get_post_meta( $id, '_advajra_open_new_tab', true ); } /** * Render ad HTML with tracking wrapper. * * @param int $id Ad ID. * @param array $options Optional render options. * @return string HTML output. */ public static function render( $id, $options = [] ) { $post = self::get( $id ); if ( ! $post ) { return ''; } $type = self::get_type( $id ); $url = self::get_url( $id ); $target = self::get_open_new_tab( $id ) ? ' target="_blank"' : ''; $html = ''; switch ( $type ) { case 'image': $image = self::get_image( $id ); $alt = get_post_meta( $id, '_advajra_alt_text', true ) ?: $post->post_title; if ( $image ) { $img_html = '' . esc_attr( $alt ) . ''; $html = $url ? '' . $img_html . '' : $img_html; } break; case 'code': $html = $post->post_content; break; case 'plain': default: $html = wp_kses_post( $post->post_content ); if ( $url ) { $html = '' . $html . ''; } break; } return sprintf( '
%s
', $id, $html ); } }