Ciao Guido,
provo a spiegarmi meglio, non nascondo che essendo totalmente inesperto ho molta confusione in testa.
Nel file settings.php del plugin è presente questo codice:
if ( ! function_exists( 'pvc_post_views' ) ) {
function pvc_post_views( $post_id = 0, $echo = true ) {
// get all data
$post_id = (int) ( empty( $post_id ) ? get_the_ID() : $post_id );
$options = Post_Views_Counter()->options['display'];
$views = pvc_get_post_views( $post_id );
// prepares display
$label = apply_filters( 'pvc_post_views_label', (function_exists( 'icl_t' ) ? icl_t( 'Post Views Counter', 'Post Views Label', $options['label'] ) : $options['label'] ), $post_id );
$icon_class = ($options['icon_class'] !== '' ? ' ' . esc_attr( $options['icon_class'] ) : '');
$icon = apply_filters( 'pvc_post_views_icon', '<span class="post-views-icon dashicons ' . $icon_class . '"></span>', $post_id );
$html = apply_filters(
'pvc_post_views_html', '<div class="post-views post-' . $post_id . ' entry-meta">
' . ($options['display_style']['icon'] && $icon_class !== '' ? $icon : '') . '
' . ($options['display_style']['text'] ? '<span class="post-views-label">' . $label . ' </span>' : '') . '
<span class="post-views-count">' . number_format_i18n( $views ) . '</span>
</div>', $post_id, $views, $label, $icon
);
if ( $echo )
echo $html;
else
return $html;
}
}
Come scrivevo, il codice HTML restituito (vedi $html) ha una serie di <span> e <div> che non desidero. Per questo motivo, nel functions.php file del mio child theme, sfruttando l’hook pvc_post_views_html ho inserito questa funzione:
add_filter('pvc_post_views_html', 'r99_post_views_html');
function r99_post_views_html () {
$html = '<span class="post-stats">' . pvc_get_post_views( get_the_id() ) . '</span>';
return $html;
}
L’$html è veramente basic, ma è quello che voglio: un semplice numero senza alcuna formattazione, classe o quant’altro (icone, etichette….), che poi decido io nel CSS stylesheet e nel single.php.
Il problema dove sta, sta nel fatto che con le modifiche apportate alcune impostazioni del plugin sono state rese completamente innoque. Se vedi il mio $html non riporta alcune variabili ($icon, $label) che traggono valore in base a come vengono determinate l’etichetta e l’icona nei settings del plugin. In futuro, qualora non mi ricordassi di questa personalizzazione che ho fatto, potrei trovarmi a impostare l’icona o l’etichetta dal menù di opzioni del plugin e non vederla funzionare, non ricordandomi di aver fatto delle aggiunte nel functions.php del child theme.
Quello che vorrei pertanto è:
1. inserire tra i settings del plugin una option (SI/NO) con cui seleziono se voglio l’$html originaria (con le classi e il layout stabilito dallo sviluppatore del plugin) oppure la funzione da me creata (quella esposta).
2. nel file functions.php del child theme, tramite un If andare a leggere l’impostazione (SI/NO) selezionata e restituire o meno la funziona personalizzata.
Mi rendo conto che la cosa è molto contorta, ma se hai delle soluzioni alternative più veloci, semplici e intuitive, ascolto con grande interesse e curiosità.
Grazie mille intanto.
Ciao.
Riccardo