Un utente ha chiesto informazioni su Developing with WordPress di Wordpress

La funzione_content non funziona correttamente all’interno del widget personalizzato di WordPress

Un utente ha chiesto 👇

Ciao amici di WordPress,

Ho creato un tema WordPress personalizzato, nel functions.php ho creato un widget WordPress personalizzato, in questo widget personalizzato che ho usato WP_Query loop per trovare il titolo e il contenuto del post. Va tutto bene ma la domanda rimane the_content() l’output dei tag HTML sul widget non funziona, ottengo solo il contenuto senza alcuna formattazione (perché quando ci riusciamo get_the_content funzione). the_content() funziona bene (formattazione HTML) nei modelli di pagina e in single.php ma senza echeggiare il contenuto formattato HTML in un widget WordPress personalizzato.

Quindi amici, il contenuto in formato HTML non può essere trovato in un widget utilizzando the_content() funzione? O c’è un modo per ottenere contenuti in formato HTML in un widget WordPress?

[ Signature moderated ]

Questo argomento è stato modificato 1 anno, 5 mesi fa da.

(@Gioiosamente)

1 anno, 5 mesi fa

Se guardi wp-include / default-filters.php, vedrai

add_filter( 'the_content', 'do_blocks', 9 );
add_filter( 'the_content', 'wptexturize' );
add_filter( 'the_content', 'convert_smilies', 20 );
add_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'shortcode_unautop' );
add_filter( 'the_content', 'prepend_attachment' );
add_filter( 'the_content', 'wp_make_content_images_responsive' );

Lanciatore di thread

(@shrinitech)

1 anno, 5 mesi fa

Ciao @ con gioia

Grazie per la tua risposta, controlla il file default-filters.php, ma non scoprire quale filtro sta eliminando la formazione HTML di function_content nel widget. Quindi non possiamo usare la funzione_content nel nostro widget WordPress personalizzato?

(@Gioiosamente)

1 anno, 5 mesi fa

Cosa manca esattamente?
Hai codificato WordPress Loop come fa un file modello?
La funzione non è limitata, ma devi usarla correttamente.
Ho scritto un tema che crea un widget per ogni modello, quindi ho un widget che chiama the_content(). Funziona perfettamente. Il tuo codice deve essere confuso da qualche parte, ma sei vago sul problema reale.

Lanciatore di thread

(@shrinitech)

1 anno, 5 mesi fa

Ciao @ con gioia

Grazie ancora per il tuo tempo 🤗.

Ecco il mio codice widget WordPress personalizzato, questo codice genera schede Bootstrap per il tipo di post “esperienza”. Quindi, quando l’utente fa clic su una scheda particolare, visualizza il rispettivo contenuto del post (ho usato function_content () qui). Ma quando ho aggiunto questo widget alla homepage ho visto solo il contenuto non formattato ma non quello che ho costruito su quel post usando il page builder Elementor, i tag HTML mancano nell’output.

Ecco il codice del widget di WordPress:

// Adds widget: Our Experiences Section
class Ourexperiencessectio_Widget extends WP_Widget {

    function __construct() {
        parent::__construct(
            'ourexperiencessectio_widget',
            esc_html__( 'Our Experiences Section', 'textdomain' )
        );
    }

    public function widget( $args, $instance ) {
        echo $args['before_widget'];
        ?>

        <div class="row">
			<div class="col-sm-12 our-experiences-wrapper padding-0">
                <ul class="nav nav-tabs nav-fill our-experiences-tabs" id="myTab" role="tablist">
                    <?php
                    $args = array(
                        'post_type' => 'experience',
                        'order'     => 'ASC'
                    );
                    $loop = new WP_Query( $args );

                    $active = "active";
                    $areaselected = "true";
                    while ( $loop->have_posts() ) : $loop->the_post();
                    ?>

                    <li class="nav-item">
                        <a class="nav-link <?php echo $active; ?>" id="a<?php echo get_the_ID() ?>-tab" data-toggle="tab" href="#a<?php echo get_the_ID() ?>" role="tab" aria-controls="a<?php echo get_the_ID() ?>" aria-selected="<?php echo $areaselected; ?>"><?php the_title(); ?></a>
                    </li>

                    <?php
                    $active = "";
                    $areaselected = "false";

                endwhile;
                ?>
            </ul>
            <?php
            wp_reset_postdata();
            ?>

            <div class="tab-content" id="myTabContent">
                <?php

                $argss = array(
                    'post_type' => 'experience',
                    'order'     => 'ASC'
                );
                $loop = new WP_Query( $argss );

                $activetab = " show active";
                while ( $loop->have_posts() ) : $loop->the_post();
                ?>
                <div class="tab-pane fade<?php echo $activetab; ?> our-experiences-tab-content" id="a<?php echo get_the_ID(); ?>" role="tabpanel" aria-labelledby="a<?php echo get_the_ID(); ?>-tab">

                    <h3>OUR EXPERIENCES</h3>
                    <?php the_content();?>

                </div>
                <?php
                $activetab = "";
            endwhile;
            wp_reset_postdata();
            ?>
        </div>

    </div>
</div>

<?php

echo $args['after_widget'];
}

}

function register_ourexperiencessectio_widget() {
    register_widget( 'Ourexperiencessectio_Widget' );
}
add_action( 'widgets_init', 'register_ourexperiencessectio_widget' );

(@Gioiosamente)

1 anno, 5 mesi fa

Stai dicendo che le scorciatoie del plugin non vengono estese?
È necessario esaminare il codice del plug-in o chiedere al forum di supporto di Elementor per scoprire quando le scorciatoie sono registrate o le scorciatoie potrebbero non essere registrate per qualche motivo.

A proposito, il file ha anche filtri predefiniti
add_filter( 'the_content', 'do_shortcode', 11 ); // AFTER wpautop()

ma è da qualche parte diverso dagli altri, quindi all’inizio non l’ho visto.

Il tuo ciclo guarda l’esempio su https://developer.wordpress.org/reference/classes/wp_query/
Consiglierei di utilizzare un numero per recuperare i post e non sono sicuro del motivo per cui fai la stessa domanda due volte.

Lanciatore di thread

(@shrinitech)

1 anno, 5 mesi fa

Ciao,

Non la scorciatoia del plug-in, il mio widget WordPress personalizzato non restituisce il contenuto formattato HTML (che ho condiviso sopra). lascia che il page builder sia qualsiasi, function_content dovrebbe produrre correttamente l’intero contenuto di quel post?

Nel codice del widget sopra, ho usato la stessa domanda due volte perché voglio visualizzare le schede e il contenuto delle rispettive schede.

(@bcworkz)

1 anno, 5 mesi fa

Bene, the_content () emette tutte le materie prime dalla SS nel loro stato indipendente, ma in aggiunta vengono applicati molti filtri che cambiano il contenuto. Inoltre, gli ottimizzatori esterni possono modificare ulteriormente l’output. Non ho familiarità con il funzionamento di Elementor, ma credo che utilizzi filtri per estendere elementi come le scorciatoie. Se per qualsiasi motivo i suoi filtri non sono attivi quando il tuo widget produce output potresti ottenere risultati imprevisti.

Joy ha detto “chiedi al forum di supporto di Elementor”. Anche questo era il mio consiglio.

Lanciatore di thread

(@shrinitech)

1 anno, 5 mesi fa

Ciao @ con gioia

Il widget WordPress personalizzato che ho creato è the_content() La funzione mostra il post con la formulazione HTML quando si aggiunge all’area del widget di WordPress, ma quando aggiungo lo stesso widget nella sezione del page builder di Elementor, l’HTML viene rimosso dal lavoro, quindi non è un problema con WordPress ma la gestione del page builder di Elementor the_content() funzionare correttamente.

Ho sollevato il problema nel forum di supporto del plugin Elementor. https://wordpress.org/support/topic/custom-wordpress-widget-not-working-properly-with-elementor-page-builder/

Contrassegna la domanda come risolta

Grazie

Lanciatore di thread

(@shrinitech)

1 anno, 5 mesi fa

Ciao @bcworkz

Grazie per la tua risposta, sì, il plugin Elementor sta cambiando il file the_content() funzione, perché lo stesso widget che è the_content() funziona bene in una varietà di widget di WordPress (restituendo esattamente ciò che ho progettato per il post).

Ho chiesto il supporto di Elementor, spero che lo esaminino. ecco il mio argomento su questo problema https://wordpress.org/support/topic/custom-wordpress-widget-not-working-properly-with-elementor-page-builder/

Il team di Hope Elementor risolve questo bug perché è un grave inconveniente.

Was this helpful?

0 / 0

Lascia un commento 0

Your email address will not be published. Required fields are marked *