Un utente ha chiesto informazioni su Developing with WordPress di Wordpress

Possiamo personalizzare “the_content ()”?

Un utente ha chiesto 👇

Sto sviluppando un plug-in che aggiungerà una barra di notifica GDPR a ciascuna pagina. Il problema è trascinare il contenuto dal tipo di post personalizzato (plug-in) nel modello visualizzato su ciascuna pagina. Il problema è questa riga di codice che WordPress utilizza per estrarre il contenuto da pagine / post:

fad (have_posts ()): the_post ();
il contenuto ();
alla fine;
finisci se; ?>

“The_content ()” è già utilizzato in tutti i modelli di pagina / post a meno che non venga utilizzato “the_exerpt ()” (e non posso usarlo – abbiamo degli estratti). Devo essere a conoscenza del codice che posso aggiungere al modello GDPR che includo in ogni pagina in modo che includa il contenuto del post GDPR personalizzato e non il contenuto della pagina / post.

Lanciatore di thread

(@stephenequus)

2 anni, 8 mesi fa

Sto guardando questa pagina:

https://codex.wordpress.org/Plugin_API/Filter_Reference/the_content

e crea lo snippet del codice a barre per vedere se si concentrerà sul post GDPR personalizzato che ho creato per aggiungere il contenuto:

<?php 
// returns the content of $GLOBALS['post']
// if the page is called 'debug'
function my_the_content_filter($content) {
// assuming you have created a page/post entitled 'debug'
if ($GLOBALS['post']->post_name == 'GDPR Cookie Notice') {
return var_export($GLOBALS['post'], TRUE );
}
// otherwise returns the database content
return $content;
}

add_filter( 'the_content', 'my_the_content_filter' );
?>

Questa risposta è stata modificata 2 anni, 8 mesi fa da. Lanciatore di thread

(@stephenequus)

2 anni, 8 mesi fa

Il cluster sopra non ha funzionato.

Tentativo di aggiungere contenuto utilizzando la funzione di campo personalizzato di WordPress e questo codice nel modello GDPR:

<?php if ( have_posts()) :
while ( have_posts()) : the_post(); 

echo get_post_meta($post->ID, 'notice', true);

endwhile; 
endif; ?>

Non funziona. Tuttavia, sulla pagina web non esce nulla.

Questa risposta è stata modificata 2 anni, 8 mesi fa da. Lanciatore di thread

(@stephenequus)

2 anni, 8 mesi fa

Il plugin potrebbe non riconoscere il modello del tema. Ecco cosa ho finora:

Collegare:

plugins (cartella) -> gdpr-cookie-Notice (cartella) -> gdpr-cookie-Notice.php (file)

PLUGIN PHP (solo file):

<?php

/**
* Plugin Name: GDPR Cookie Notice
* Description: Adds a Pop-up notice bar on the bottom of the page for GDPR notifications
* Author: Stephen Jensen
**/

defined( 'ABSPATH' ) or die( 'You Shall Not Pass!' );

function gdpr_create_post_type(){
		$labels = array(
			'name'               => 'GDPR Notice', // => seperator for associative array key => value
			'singular_name'      => 'GDPR Notice',
			'add_new'            => 'Add New',
			'add_new_item'       => 'Add New GDPR Notice',
			'edit_item'          => 'Edit GDPR Notice',
			'new_item'           => 'New GDPR Notice',
			'view_item'          => 'View GDPR Notices',
			'search_items'       => 'Search GDPR Notices',
			'not_found'          => 'No GDPR Notices Found',
			'not_found_in_trash' => 'No GDPR Notices Found in Trash'
		);
		$args = array(
			'labels'             => $labels,
			'has_archive'        => false, // these will be used in pages
			'public'             => true,
			'hierarchical'       => true, // behave like a page
			'rewrite'            => array(
				'with_front'       => false, // false removes permalink /blog/ structure
				'slug'             => 'gdpr-notice'
			),
			'menu_icon'          => 'dashicons-id-alt',
			'supports'           => array( // features
				'title',
				'author',
				'editor',
				'custom-fields',
				'page-attributes'
			)
		);
		register_post_type('gdpr', $args);
	}
	add_action('init', 'gdpr_create_post_type');

?>

TEMA:

theme (cartella) -> theme_name (cartella) -> single-gdpr.php

TEMA PHP (un file – provando due modi diversi per ottenere il contenuto):

<?php 
/* 
The file for the GDPR Cookie Notice post type, registered via a plugin
*/
?>
<div class="cookie-bar">
	<section class="section float-me me-floated">
		<div class="container">
			<div class="row text-center">

				<?php if ( have_posts()) :
					while ( have_posts()) : the_post(); 

							the_content();

					endwhile; 
				endif; ?>
				<?php if ( have_posts()) :
					while ( have_posts()) : the_post(); 

							echo get_post_meta($post->ID, 'notice', true);

					endwhile; 
				endif; ?>

				<p style="text-align: center;">
					/*************************<br />
					SINGLE-GDPR.PHP<br />
					*************************/
				</p>

			</div>
		</div>
	</section>
</div>

Header.php (link a gdpr quindi è su ogni pagina):

<header>... navigation code ...</header>
<?php get_template_part('single-gdpr'); ?>

AMMINISTRATORE WP:

Notifica GDPR (menu di amministrazione) -> Notifica cookie GDPR (nome pagina)

PAGINA DELLE OPZIONI (Compila due opzioni: basta farne funzionare una):

Editor WP:
Leggi la nostra informativa sulla privacy per saperne di più su come utilizziamo i cookie.

Campo personalizzato:
Nome: avviso
Valore: leggi la nostra politica sulla privacy per saperne di più su come utilizziamo i cookie.

Spero che questo mostri il metodo alla mia mente. Forse mi sono persa una laurea. Grazie per qualsiasi aiuto che chiunque possa dare.

Questa risposta è stata modificata 2 anni, 8 mesi fa da. Questa risposta è stata modificata 2 anni, 8 mesi fa da. Questa risposta è stata modificata 2 anni, 8 mesi fa da. Questa risposta è stata modificata 2 anni, 8 mesi fa da. Lanciatore di thread

(@stephenequus)

2 anni, 8 mesi fa

Fare clic sul permalink per la pagina – Notifica cookie GDPR – e posso dire che sta utilizzando il modello one-gdpr.php nella directory del tema e sta trascinando in entrambi the_content() e il echo get_post_meta($post->ID, 'notice', true); quindi alcuni quando falliscono quando vengono trascinati nel file header.php. Nel codice sorgente posso vedere il codice html da one-gdpr.php ma nessun contenuto viene estratto.

(@bcworkz)

2 anni, 8 mesi fa

Mi spiace, non ho esaminato tutti i tuoi esempi di codice e ho semplicemente letto con leggerezza i tuoi post. Questo perché non penso che “the_content” sia il modo migliore per pubblicare annunci GDPR. Se hai inserito l’annuncio con ogni occorrenza di un post, indice o pagina di archivio, avrai molti multipli dello stesso annuncio su una pagina.

La maggior parte delle persone desidera che l’annuncio venga visualizzato come prima cosa nell’intestazione della pagina. Il problema con gli sviluppatori di plug-in è che non esistono azioni o filtri affidabili che possiamo restituire per attivare l’output come prima cosa nell’intestazione. Probabilmente il wok più affidabile è “wp_nav_menu”. Funzionerà per la stragrande maggioranza dei temi. È possibile visualizzare in anteprima la notifica GDPR prima o dopo il menu HTML appena prima che venga emessa.

L’altro problema con l’utilizzo di “wp_nav_menu” è che non puoi essere sicuro di come il contenuto aggiuntivo influenzerà il layout dell’intestazione. L’avviso doveva essere completamente posizionato in modo da avere il minimo impatto sul layout. Sarebbe più simile a un modale che al contenuto della pagina.

Con il posizionamento completo del contenuto, il codice HTML effettivo può essere visualizzato ovunque sulla pagina, anche nel piè di pagina. È possibile utilizzare l’azione “wp_footer” per rendere la notifica analogica. In effetti, anche “the_content” potrebbe essere utilizzato a condizione che si adottino misure per garantire che venga visualizzato solo una volta per pagina e non per ogni post. Questo può essere fatto rimuovendo il richiamo dall’acciaio del filtro dopo l’output iniziale.

Lanciatore di thread

(@stephenequus)

2 anni, 8 mesi fa

Ho deciso di interrogare il database per prendere il modulo di informazioni che la tabella ha creato per questo tipo di lavoro e sputarlo. Pensi che questa sia una buona soluzione o no?

(@bcworkz)

2 anni, 8 mesi fa

Ottieni la verbosità degli annunci GDPR da un post di tipo di post personalizzato? Si va bene. Quindi è relativamente facile per qualcuno cambiare il messaggio se necessario. Questo presuppone che sia importante la capacità di cambiare il messaggio. Sarebbe più efficiente codificare un messaggio statico, ma sarebbe difficile per altri modificare questo messaggio. Potrebbe essere fornito un filtro per consentire ad altri programmatori di modificare il messaggio predefinito in modo pulito, ma questo va oltre le capacità degli utenti ordinari da applicare.

Un’altra possibilità è inserire un campo di opzione da qualche parte che consenta agli utenti di modificare il messaggio predefinito. Ci sono diverse possibilità, utilizzare un lavoro per mantenere i contenuti è praticabile come qualsiasi altro.

Lanciatore di thread

(@stephenequus)

2 anni, 7 mesi fa

Ho deciso di chiamare il database MySQL e inserire tali informazioni nel modello one-gdpr.php, quindi sostituire il ciclo di WordPress con una chiamata al database.

<?php

	$table_prefix  = '###_';
	$startat = 'englishnotice'; // English Custom Field Name
	$sitepostmeta = $table_prefix . 'postmeta';

	$posts = $wpdb->get_results("SELECT meta_value FROM $sitepostmeta WHERE meta_key = '$startat'");

	echo $posts[0]->meta_value;

?>

Questa risposta è stata modificata 2 anni, 7 mesi fa. Lanciatore di thread

(@stephenequus)

2 anni, 7 mesi fa

ERP …

$ Post è una variabile riservata, penso, quindi usa $ gdprposts, altrimenti la tua pagina di blog e qualsiasi altra pagina di tipo di pagina personalizzata non attirerà il contenuto.

$gdprposts = $wpdb->get_results("SELECT meta_value FROM $sitepostmeta WHERE meta_key = '$startat'");

echo $gdprposts[0]->meta_value;

Was this helpful?

0 / 0

Lascia un commento 0

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