• esc_html__( ‘Displays contents or comments filtered by a specific reaction.’, ‘da-reactions’ ) ) ); } /** * Render the widget on frontend * * @param array $args * @param array $instance * * @since 1.0.0 */ public function widget( $args, $instance ) { $title = ! empty( $instance[‘title’] ) ? esc_html( $instance[‘title’] ) : esc_html__( ‘Recent Posts’, ‘da-reactions’ ); $number = ! empty( $instance[‘number’] ) ? absint( $instance[‘number’] ) : 5; $show_reaction = isset( $instance[‘show_reaction’] ) && $instance[‘show_reaction’]; $reaction = isset( $instance[‘reaction’] ) ? absint( $instance[‘reaction’] ) : 0; $post_type = isset( $instance[‘post_type’] ) ? esc_attr( $instance[‘post_type’] ) : ‘post’; // Fetch cached results if available $cache_key = ‘da_reactions_widget_’ . $this->id; $results = wp_cache_get( $cache_key ); if ( false === $results ) { // Fetch results based on post_type and reaction $results = ( $post_type === ‘comments’ ) ? Data::getCommentsByReaction( $reaction, $number ) : Data::getContentsByReaction( $post_type, $reaction, $number ); // Cache the results for an hour wp_cache_set( $cache_key, $results, ”, 3600 ); } echo wp_kses( $args[‘before_widget’], ‘post’ ); if ( $title ) { echo wp_kses( $args[‘before_title’] . $title . $args[‘after_title’], ‘post’ ); } echo ‘
      ‘; if ( empty( $results ) ) { echo ‘
    • ‘ . esc_html__( ‘No reactions found.’, ‘da-reactions’ ) . ‘
    • ‘; } else { // Loop through results and render items foreach ( $results as $item ) { $this->render_item( $item, $show_reaction, $post_type ); } } echo ‘
    ‘; echo wp_kses( $args[‘after_widget’], ‘post’ ); // Optional: Hook to execute after rendering posts do_action( ‘da_reactions_widget_after_posts’, $results ); } /** * Render individual items (post or comment) in the widget * * @param object $item – The post or comment object. * @param bool $show_reaction – Whether to show the reaction count. * @param string $post_type – Type of item (post or comments). */ private function render_item( $item, $show_reaction, $post_type ) { if ( $post_type === ‘comments’ ) { // Render comment echo ‘
  • ‘; echo ‘ID ) ) . ‘”>’; echo esc_html( get_the_title( $item->ID ) ); echo ‘‘; if ( $show_reaction ) { echo ‘ (‘ . absint( $item->reaction_count ) . ‘ ‘ . esc_html__( ‘reactions’, ‘da-reactions’ ) . ‘)’; } echo ‘
  • ‘; } } /** * Back-end widget form. */ public function form( $instance ) { $title = isset( $instance[‘title’] ) ? esc_html( $instance[‘title’] ) : ”; $number = isset( $instance[‘number’] ) ? absint( $instance[‘number’] ) : 5; $show_reaction = isset( $instance[‘show_reaction’] ) ? (bool) $instance[‘show_reaction’] : false; $reaction = isset( $instance[‘reaction’] ) ? absint( $instance[‘reaction’] ) : 0; $post_type = isset( $instance[‘post_type’] ) ? esc_attr( $instance[‘post_type’] ) : ‘post’; ?>

    get_field_id( ‘reaction’ ) ); ?>”> get_field_id( ‘post_type’ ) ); ?>”>

    id=”get_field_id( ‘show_reaction’ ) ); ?>” name=”get_field_name( ‘show_reaction’ ) ); ?>”/>

    Este parágrafo serve como uma introdução ao seu post no blog. Comece discutindo o tema principal ou o tópico que você planeja abordar, garantindo que ele capte o interesse do leitor desde a primeira frase. Forneça uma visão geral que destaque por que esse tema é importante e como ele pode agregar valor. Use este espaço para definir o tom do restante do artigo e preparar os leitores para a jornada que está por vir. Mantenha a linguagem acessível, mas informativa, para criar uma conexão sólida.

    Às vezes, os momentos mais simples contêm a sabedoria mais profunda. Deixe seus pensamentos se acalmarem, e a clareza virá até você. Use este espaço de citação para compartilhar algo inspirador ou reflexivo, perfeitamente alinhado com o tema do seu artigo.

    Este parágrafo aprofunda o tema apresentado anteriormente, expandindo a ideia principal com exemplos, análises ou contexto adicional. Use esta seção para desenvolver pontos específicos e certifique-se de que cada frase se baseie na anterior para manter um fluxo coeso. Você pode incluir dados, anedotas ou opiniões de especialistas para reforçar seus argumentos. Mantenha a linguagem concisa, mas suficientemente descritiva para manter os leitores interessados. É aqui que a essência do seu artigo começa a tomar forma.

    Conforme avança para o meio do artigo, este parágrafo oferece a oportunidade de conectar as ideias anteriores com novas perspectivas. Use este espaço para apresentar perspectivas alternativas ou abordar possíveis perguntas que os leitores possam ter. Encontre um equilíbrio entre profundidade e facilidade de leitura, garantindo que a informação seja compreensível. Esta seção também pode servir como uma transição para os pontos de conclusão, mantendo o impulso enquanto conduz a discussão para seus estágios finais.

    Conclusão com pontos principais

    Neste parágrafo de conclusão, resuma os pontos principais do seu artigo, reforçando as ideias mais importantes discutidas. Incentive os leitores a refletir sobre os conhecimentos compartilhados ou ofereça conselhos práticos que eles possam aplicar em suas próprias vidas. Esta é a sua chance de deixar uma impressão duradoura, então certifique-se de que seus pensamentos finais sejam impactantes e memoráveis. Uma conclusão sólida não apenas une o artigo, mas também inspira os leitores a se envolverem ainda mais.

    Loading spinner
  • esc_html__( ‘Displays contents or comments filtered by a specific reaction.’, ‘da-reactions’ ) ) ); } /** * Render the widget on frontend * * @param array $args * @param array $instance * * @since 1.0.0 */ public function widget( $args, $instance ) { $title = ! empty( $instance[‘title’] ) ? esc_html( $instance[‘title’] ) : esc_html__( ‘Recent Posts’, ‘da-reactions’ ); $number = ! empty( $instance[‘number’] ) ? absint( $instance[‘number’] ) : 5; $show_reaction = isset( $instance[‘show_reaction’] ) && $instance[‘show_reaction’]; $reaction = isset( $instance[‘reaction’] ) ? absint( $instance[‘reaction’] ) : 0; $post_type = isset( $instance[‘post_type’] ) ? esc_attr( $instance[‘post_type’] ) : ‘post’; // Fetch cached results if available $cache_key = ‘da_reactions_widget_’ . $this->id; $results = wp_cache_get( $cache_key ); if ( false === $results ) { // Fetch results based on post_type and reaction $results = ( $post_type === ‘comments’ ) ? Data::getCommentsByReaction( $reaction, $number ) : Data::getContentsByReaction( $post_type, $reaction, $number ); // Cache the results for an hour wp_cache_set( $cache_key, $results, ”, 3600 ); } echo wp_kses( $args[‘before_widget’], ‘post’ ); if ( $title ) { echo wp_kses( $args[‘before_title’] . $title . $args[‘after_title’], ‘post’ ); } echo ‘
      ‘; if ( empty( $results ) ) { echo ‘
    • ‘ . esc_html__( ‘No reactions found.’, ‘da-reactions’ ) . ‘
    • ‘; } else { // Loop through results and render items foreach ( $results as $item ) { $this->render_item( $item, $show_reaction, $post_type ); } } echo ‘
    ‘; echo wp_kses( $args[‘after_widget’], ‘post’ ); // Optional: Hook to execute after rendering posts do_action( ‘da_reactions_widget_after_posts’, $results ); } /** * Render individual items (post or comment) in the widget * * @param object $item – The post or comment object. * @param bool $show_reaction – Whether to show the reaction count. * @param string $post_type – Type of item (post or comments). */ private function render_item( $item, $show_reaction, $post_type ) { if ( $post_type === ‘comments’ ) { // Render comment echo ‘
  • ‘; echo ‘ID ) ) . ‘”>’; echo esc_html( get_the_title( $item->ID ) ); echo ‘‘; if ( $show_reaction ) { echo ‘ (‘ . absint( $item->reaction_count ) . ‘ ‘ . esc_html__( ‘reactions’, ‘da-reactions’ ) . ‘)’; } echo ‘
  • ‘; } } /** * Back-end widget form. */ public function form( $instance ) { $title = isset( $instance[‘title’] ) ? esc_html( $instance[‘title’] ) : ”; $number = isset( $instance[‘number’] ) ? absint( $instance[‘number’] ) : 5; $show_reaction = isset( $instance[‘show_reaction’] ) ? (bool) $instance[‘show_reaction’] : false; $reaction = isset( $instance[‘reaction’] ) ? absint( $instance[‘reaction’] ) : 0; $post_type = isset( $instance[‘post_type’] ) ? esc_attr( $instance[‘post_type’] ) : ‘post’; ?>

    get_field_id( ‘reaction’ ) ); ?>”> get_field_id( ‘post_type’ ) ); ?>”>

    id=”get_field_id( ‘show_reaction’ ) ); ?>” name=”get_field_name( ‘show_reaction’ ) ); ?>”/>

    Este parágrafo serve como uma introdução ao seu post no blog. Comece discutindo o tema principal ou o tópico que você planeja abordar, garantindo que ele capte o interesse do leitor desde a primeira frase. Forneça uma visão geral que destaque por que esse tema é importante e como ele pode agregar valor. Use este espaço para definir o tom do restante do artigo e preparar os leitores para a jornada que está por vir. Mantenha a linguagem acessível, mas informativa, para criar uma conexão sólida.

    Às vezes, os momentos mais simples contêm a sabedoria mais profunda. Deixe seus pensamentos se acalmarem, e a clareza virá até você. Use este espaço de citação para compartilhar algo inspirador ou reflexivo, perfeitamente alinhado com o tema do seu artigo.

    Este parágrafo aprofunda o tema apresentado anteriormente, expandindo a ideia principal com exemplos, análises ou contexto adicional. Use esta seção para desenvolver pontos específicos e certifique-se de que cada frase se baseie na anterior para manter um fluxo coeso. Você pode incluir dados, anedotas ou opiniões de especialistas para reforçar seus argumentos. Mantenha a linguagem concisa, mas suficientemente descritiva para manter os leitores interessados. É aqui que a essência do seu artigo começa a tomar forma.

    Conforme avança para o meio do artigo, este parágrafo oferece a oportunidade de conectar as ideias anteriores com novas perspectivas. Use este espaço para apresentar perspectivas alternativas ou abordar possíveis perguntas que os leitores possam ter. Encontre um equilíbrio entre profundidade e facilidade de leitura, garantindo que a informação seja compreensível. Esta seção também pode servir como uma transição para os pontos de conclusão, mantendo o impulso enquanto conduz a discussão para seus estágios finais.

    Conclusão com pontos principais

    Neste parágrafo de conclusão, resuma os pontos principais do seu artigo, reforçando as ideias mais importantes discutidas. Incentive os leitores a refletir sobre os conhecimentos compartilhados ou ofereça conselhos práticos que eles possam aplicar em suas próprias vidas. Esta é a sua chance de deixar uma impressão duradoura, então certifique-se de que seus pensamentos finais sejam impactantes e memoráveis. Uma conclusão sólida não apenas une o artigo, mas também inspira os leitores a se envolverem ainda mais.

    Loading spinner
  • esc_html__( ‘Displays contents or comments filtered by a specific reaction.’, ‘da-reactions’ ) ) ); } /** * Render the widget on frontend * * @param array $args * @param array $instance * * @since 1.0.0 */ public function widget( $args, $instance ) { $title = ! empty( $instance[‘title’] ) ? esc_html( $instance[‘title’] ) : esc_html__( ‘Recent Posts’, ‘da-reactions’ ); $number = ! empty( $instance[‘number’] ) ? absint( $instance[‘number’] ) : 5; $show_reaction = isset( $instance[‘show_reaction’] ) && $instance[‘show_reaction’]; $reaction = isset( $instance[‘reaction’] ) ? absint( $instance[‘reaction’] ) : 0; $post_type = isset( $instance[‘post_type’] ) ? esc_attr( $instance[‘post_type’] ) : ‘post’; // Fetch cached results if available $cache_key = ‘da_reactions_widget_’ . $this->id; $results = wp_cache_get( $cache_key ); if ( false === $results ) { // Fetch results based on post_type and reaction $results = ( $post_type === ‘comments’ ) ? Data::getCommentsByReaction( $reaction, $number ) : Data::getContentsByReaction( $post_type, $reaction, $number ); // Cache the results for an hour wp_cache_set( $cache_key, $results, ”, 3600 ); } echo wp_kses( $args[‘before_widget’], ‘post’ ); if ( $title ) { echo wp_kses( $args[‘before_title’] . $title . $args[‘after_title’], ‘post’ ); } echo ‘
      ‘; if ( empty( $results ) ) { echo ‘
    • ‘ . esc_html__( ‘No reactions found.’, ‘da-reactions’ ) . ‘
    • ‘; } else { // Loop through results and render items foreach ( $results as $item ) { $this->render_item( $item, $show_reaction, $post_type ); } } echo ‘
    ‘; echo wp_kses( $args[‘after_widget’], ‘post’ ); // Optional: Hook to execute after rendering posts do_action( ‘da_reactions_widget_after_posts’, $results ); } /** * Render individual items (post or comment) in the widget * * @param object $item – The post or comment object. * @param bool $show_reaction – Whether to show the reaction count. * @param string $post_type – Type of item (post or comments). */ private function render_item( $item, $show_reaction, $post_type ) { if ( $post_type === ‘comments’ ) { // Render comment echo ‘
  • ‘; echo ‘ID ) ) . ‘”>’; echo esc_html( get_the_title( $item->ID ) ); echo ‘‘; if ( $show_reaction ) { echo ‘ (‘ . absint( $item->reaction_count ) . ‘ ‘ . esc_html__( ‘reactions’, ‘da-reactions’ ) . ‘)’; } echo ‘
  • ‘; } } /** * Back-end widget form. */ public function form( $instance ) { $title = isset( $instance[‘title’] ) ? esc_html( $instance[‘title’] ) : ”; $number = isset( $instance[‘number’] ) ? absint( $instance[‘number’] ) : 5; $show_reaction = isset( $instance[‘show_reaction’] ) ? (bool) $instance[‘show_reaction’] : false; $reaction = isset( $instance[‘reaction’] ) ? absint( $instance[‘reaction’] ) : 0; $post_type = isset( $instance[‘post_type’] ) ? esc_attr( $instance[‘post_type’] ) : ‘post’; ?>

    get_field_id( ‘reaction’ ) ); ?>”> get_field_id( ‘post_type’ ) ); ?>”>

    id=”get_field_id( ‘show_reaction’ ) ); ?>” name=”get_field_name( ‘show_reaction’ ) ); ?>”/>

    Este parágrafo serve como uma introdução ao seu post no blog. Comece discutindo o tema principal ou o tópico que você planeja abordar, garantindo que ele capte o interesse do leitor desde a primeira frase. Forneça uma visão geral que destaque por que esse tema é importante e como ele pode agregar valor. Use este espaço para definir o tom do restante do artigo e preparar os leitores para a jornada que está por vir. Mantenha a linguagem acessível, mas informativa, para criar uma conexão sólida.

    Às vezes, os momentos mais simples contêm a sabedoria mais profunda. Deixe seus pensamentos se acalmarem, e a clareza virá até você. Use este espaço de citação para compartilhar algo inspirador ou reflexivo, perfeitamente alinhado com o tema do seu artigo.

    Este parágrafo aprofunda o tema apresentado anteriormente, expandindo a ideia principal com exemplos, análises ou contexto adicional. Use esta seção para desenvolver pontos específicos e certifique-se de que cada frase se baseie na anterior para manter um fluxo coeso. Você pode incluir dados, anedotas ou opiniões de especialistas para reforçar seus argumentos. Mantenha a linguagem concisa, mas suficientemente descritiva para manter os leitores interessados. É aqui que a essência do seu artigo começa a tomar forma.

    Conforme avança para o meio do artigo, este parágrafo oferece a oportunidade de conectar as ideias anteriores com novas perspectivas. Use este espaço para apresentar perspectivas alternativas ou abordar possíveis perguntas que os leitores possam ter. Encontre um equilíbrio entre profundidade e facilidade de leitura, garantindo que a informação seja compreensível. Esta seção também pode servir como uma transição para os pontos de conclusão, mantendo o impulso enquanto conduz a discussão para seus estágios finais.

    Conclusão com pontos principais

    Neste parágrafo de conclusão, resuma os pontos principais do seu artigo, reforçando as ideias mais importantes discutidas. Incentive os leitores a refletir sobre os conhecimentos compartilhados ou ofereça conselhos práticos que eles possam aplicar em suas próprias vidas. Esta é a sua chance de deixar uma impressão duradoura, então certifique-se de que seus pensamentos finais sejam impactantes e memoráveis. Uma conclusão sólida não apenas une o artigo, mas também inspira os leitores a se envolverem ainda mais.

    Loading spinner
  • esc_html__( ‘Displays contents or comments filtered by a specific reaction.’, ‘da-reactions’ ) ) ); } /** * Render the widget on frontend * * @param array $args * @param array $instance * * @since 1.0.0 */ public function widget( $args, $instance ) { $title = ! empty( $instance[‘title’] ) ? esc_html( $instance[‘title’] ) : esc_html__( ‘Recent Posts’, ‘da-reactions’ ); $number = ! empty( $instance[‘number’] ) ? absint( $instance[‘number’] ) : 5; $show_reaction = isset( $instance[‘show_reaction’] ) && $instance[‘show_reaction’]; $reaction = isset( $instance[‘reaction’] ) ? absint( $instance[‘reaction’] ) : 0; $post_type = isset( $instance[‘post_type’] ) ? esc_attr( $instance[‘post_type’] ) : ‘post’; // Fetch cached results if available $cache_key = ‘da_reactions_widget_’ . $this->id; $results = wp_cache_get( $cache_key ); if ( false === $results ) { // Fetch results based on post_type and reaction $results = ( $post_type === ‘comments’ ) ? Data::getCommentsByReaction( $reaction, $number ) : Data::getContentsByReaction( $post_type, $reaction, $number ); // Cache the results for an hour wp_cache_set( $cache_key, $results, ”, 3600 ); } echo wp_kses( $args[‘before_widget’], ‘post’ ); if ( $title ) { echo wp_kses( $args[‘before_title’] . $title . $args[‘after_title’], ‘post’ ); } echo ‘
      ‘; if ( empty( $results ) ) { echo ‘
    • ‘ . esc_html__( ‘No reactions found.’, ‘da-reactions’ ) . ‘
    • ‘; } else { // Loop through results and render items foreach ( $results as $item ) { $this->render_item( $item, $show_reaction, $post_type ); } } echo ‘
    ‘; echo wp_kses( $args[‘after_widget’], ‘post’ ); // Optional: Hook to execute after rendering posts do_action( ‘da_reactions_widget_after_posts’, $results ); } /** * Render individual items (post or comment) in the widget * * @param object $item – The post or comment object. * @param bool $show_reaction – Whether to show the reaction count. * @param string $post_type – Type of item (post or comments). */ private function render_item( $item, $show_reaction, $post_type ) { if ( $post_type === ‘comments’ ) { // Render comment echo ‘
  • ‘; echo ‘ID ) ) . ‘”>’; echo esc_html( get_the_title( $item->ID ) ); echo ‘‘; if ( $show_reaction ) { echo ‘ (‘ . absint( $item->reaction_count ) . ‘ ‘ . esc_html__( ‘reactions’, ‘da-reactions’ ) . ‘)’; } echo ‘
  • ‘; } } /** * Back-end widget form. */ public function form( $instance ) { $title = isset( $instance[‘title’] ) ? esc_html( $instance[‘title’] ) : ”; $number = isset( $instance[‘number’] ) ? absint( $instance[‘number’] ) : 5; $show_reaction = isset( $instance[‘show_reaction’] ) ? (bool) $instance[‘show_reaction’] : false; $reaction = isset( $instance[‘reaction’] ) ? absint( $instance[‘reaction’] ) : 0; $post_type = isset( $instance[‘post_type’] ) ? esc_attr( $instance[‘post_type’] ) : ‘post’; ?>

    get_field_id( ‘reaction’ ) ); ?>”> get_field_id( ‘post_type’ ) ); ?>”>

    id=”get_field_id( ‘show_reaction’ ) ); ?>” name=”get_field_name( ‘show_reaction’ ) ); ?>”/>

    Este parágrafo serve como uma introdução ao seu post no blog. Comece discutindo o tema principal ou o tópico que você planeja abordar, garantindo que ele capte o interesse do leitor desde a primeira frase. Forneça uma visão geral que destaque por que esse tema é importante e como ele pode agregar valor. Use este espaço para definir o tom do restante do artigo e preparar os leitores para a jornada que está por vir. Mantenha a linguagem acessível, mas informativa, para criar uma conexão sólida.

    Às vezes, os momentos mais simples contêm a sabedoria mais profunda. Deixe seus pensamentos se acalmarem, e a clareza virá até você. Use este espaço de citação para compartilhar algo inspirador ou reflexivo, perfeitamente alinhado com o tema do seu artigo.

    Este parágrafo aprofunda o tema apresentado anteriormente, expandindo a ideia principal com exemplos, análises ou contexto adicional. Use esta seção para desenvolver pontos específicos e certifique-se de que cada frase se baseie na anterior para manter um fluxo coeso. Você pode incluir dados, anedotas ou opiniões de especialistas para reforçar seus argumentos. Mantenha a linguagem concisa, mas suficientemente descritiva para manter os leitores interessados. É aqui que a essência do seu artigo começa a tomar forma.

    Conforme avança para o meio do artigo, este parágrafo oferece a oportunidade de conectar as ideias anteriores com novas perspectivas. Use este espaço para apresentar perspectivas alternativas ou abordar possíveis perguntas que os leitores possam ter. Encontre um equilíbrio entre profundidade e facilidade de leitura, garantindo que a informação seja compreensível. Esta seção também pode servir como uma transição para os pontos de conclusão, mantendo o impulso enquanto conduz a discussão para seus estágios finais.

    Conclusão com pontos principais

    Neste parágrafo de conclusão, resuma os pontos principais do seu artigo, reforçando as ideias mais importantes discutidas. Incentive os leitores a refletir sobre os conhecimentos compartilhados ou ofereça conselhos práticos que eles possam aplicar em suas próprias vidas. Esta é a sua chance de deixar uma impressão duradoura, então certifique-se de que seus pensamentos finais sejam impactantes e memoráveis. Uma conclusão sólida não apenas une o artigo, mas também inspira os leitores a se envolverem ainda mais.

    Loading spinner