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( ‘number’ ) ); ?>”>
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.
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( ‘number’ ) ); ?>”>
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.
‘;
}
}
/**
* 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’;
?>
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.