Maison > développement back-end > tutoriel php > Métabox personnalisée réutilisable utilisant des données, partie 4

Métabox personnalisée réutilisable utilisant des données, partie 4

王林
Libérer: 2023-08-30 06:00:02
original
1477 Les gens l'ont consulté

Dans les parties 1, 2 et 3 de notre série de didacticiels sur les modèles de méta-boîtes personnalisés, nous avons appris à créer une méta-boîte réutilisable qui récupère tous les éléments d'un tableau facile à lire et à copier. Informations sur les champs . Une grande partie des données est facile à utiliser, il suffit de faire écho aux métachamps dans des modèles ou via des fonctions, mais certains champs sont plus complexes et nécessitent plus de compétences pour être utilisés correctement. Ce tutoriel vous donnera une idée de base sur la façon d'utiliser ces données, et il peut être élaboré d'innombrables façons.


Obtenir des données

WordPress propose plusieurs façons d'obtenir des métadonnées de publication.

Sortir toutes les données en même temps

Le moyen le plus simple d'afficher les données est d'utiliser la fonction Métabox personnalisée réutilisable utilisant des données, partie 4(). Vous pouvez mettre cela directement dans votre modèle single.php, mais cela ne vous donnera pas les résultats que vous souhaitez probablement. Il s'agit d'une sortie très littérale des données dans une liste non ordonnée, préfixée par la clé de chaque champ, comme indiqué.

Métabox personnalisée réutilisable utilisant des données, partie 4Métabox personnalisée réutilisable utilisant des données, partie 4Métabox personnalisée réutilisable utilisant des données, partie 4

Obtenez un seul champ

Le moyen le plus courant d'enregistrer des données dans un champ post-méta est d'utiliser la fonction get_post_meta(). Il s'agit d'un moyen simple de localiser un champ spécifique et de le stocker dans une variable qui pourra être utilisée ultérieurement.

$custom_text = get_post_meta($post->ID, 'custom_text', true);
Copier après la connexion

L'utilisation de ce code dans une seule post-boucle placera le texte "du texte de l'entrée de texte de base" dans une variable $custom_text qui pourra ensuite être mise en écho ou filtrée, ou tout ce que vous voulez faire avec la chaîne. Cela peut être la bonne approche lorsque vous ne traitez que quelques champs, mais dans notre exemple, nous traitons de 11 champs différents. Les appeler individuellement à l'aide de cette fonction gonflera inutilement votre code car il existe un moyen d'obtenir toutes les données en même temps.

Obtenez toutes les données en même temps

Ma méthode préférée lorsque je traite autant de champs est d'utiliser la fonction get_post_custom(). Avec cette fonction, nous pouvons stocker tous les champs méta post personnalisés dans un tableau, puis récupérer les données souhaitées à l'aide des clés du tableau.

$post_meta_data = get_post_custom($post->ID); nous donnera un tableau comme celui-ci :

Array
(
    [custom_text] => Array (
            [0] => Some text in a basic text input
        )
    [custom_textarea] => Array (
            [0] => A paragraph or two from a textarea. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec tristique quam mi. Sed eget ligula sit amet ante dapibus tristique. 

Mauris vel enim mauris, vitae mattis tortor. Praesent at adipiscing massa. Fusce quis eros vel sem pharetra consequat imperdiet ut est.
        )
    [custom_checkbox] => Array (
            [0] => on
        )
    [custom_select] => Array (
            [0] => one
        )
    [custom_radio] => Array (
            [0] => two
        )
    [custom_checkbox_group] => Array (
            [0] => a:2:{i:0;s:3:"one";i:1;s:5:"three";}
        )
    [custom_post_id] => Array (
            [0] => 109
        )
    [custom_date] => Array (
            [0] => 05/25/2012
        )
    [custom_slider] => Array (
            [0] => 15
        )
    [custom_image] => Array (
            [0] => 413
        )
    [custom_repeatable] => Array (
            [0] => a:3:{i:0;s:22:"text from a repeatable";i:1;s:27:"more text from a repeatable";i:2;s:33:"repeatable text fields are great!";}
        )
)
Copier après la connexion

Comme vous pouvez le voir sur ce tableau, WordPress stocke chaque champ sous forme de tableau car il peut y avoir plusieurs valeurs pour le même champ. Vous remarquerez peut-être également que certains champs sont sérialisés. Examinons de plus près la manière dont les données de chaque champ sont traitées et discutons de la manière de résoudre ce problème.


Champs de saisie simples

Travailler avec des champs de texte et de zone de texte est très simple. Vous pouvez y répondre en utilisant l'un des exemples suivants :

echo $post_meta_data['custom_text'][0];

echo apply_filters('the_content', $post_meta_data['custom_textarea'][0]);

$custom_checkox = $post_meta_data['custom_checkbox'][0];

if ($custom_checkbox == 'on') {
	do_stuff();
}
Copier après la connexion

La première ligne affichera simplement la chaîne telle quelle, la deuxième ligne utilisera le filtre the_content de WordPress pour convertir les sauts de ligne en paragraphes. Vous pouvez également utiliser ces mêmes méthodes avec les champs de sélection, radio, date et curseur.

La dernière ligne montre comment tester si la case est cochée. Si tel est le cas, vous pouvez exécuter diverses fonctions ou un certain nombre de choses.


Données sérialisées

Nos champs de groupe de cases à cocher et champs répétables sont stockés dans des tableaux sérialisés dans la base de données. Avant de sortir ces données, nous devons les désérialiser.

$custom_checkbox_group = unserialize($post_meta_data['custom_checkbox_group'][0]);

$custom_repeatable = unserialize($post_meta_data['custom_repeatable'][0]);
Copier après la connexion
La fonction

unserialize() est une fonction PHP de base qui convertit nos données en un tableau plus facile à utiliser. Le code ci-dessus me donnera deux tableaux qui ressemblent à ceci :

Array
(
    [0] => one
    [1] => three
)
Array
(
    [0] => text from a repeatable
    [1] => more text from a repeatable
    [2] => repeatable text fields are great!
)
Copier après la connexion

Maintenant, je peux parcourir les tableaux, mais je souhaite les utiliser dans la sortie. Une chose à noter est que dans un champ répétable, si vous le rendez également triable comme dans l'exemple de la partie 3 du didacticiel sur les modèles de méta-boîtes personnalisées, les clés du tableau seront automatiquement dans l'ordre 0, 1, 2, 3, etc. ., plutôt que dans l'ordre dans lequel ils ont été initialement saisis avant le tri.

echo '<ul class="custom_repeatable">';
foreach ($custom_repeatable as $string) {
	echo '&ltli>'.$string.'</li>';
}
echo '</ul>';
Copier après la connexion

Cet exemple affichera une liste non ordonnée de chaque chaîne contenue dans le tableau $custom_repeatable.


Données professionnelles

Pour notre liste de publications et nos champs d'image, nous enregistrons un identifiant. Dans de rares cas, vous souhaiterez peut-être simplement afficher l'ID, mais vous souhaiterez très probablement utiliser l'ID pour obtenir plus d'informations.

$custom_post_id = $post_meta_data['custom_post_id'][0];
echo '<a href="'.get_permalink($custom_post_id).'">'.get_the_title($custom_post_id).'</a>';

$custom_image = $post_meta_data['custom_image'][0];
echo wp_get_attachment_image($custom_image, 'thumbnail');
Copier après la connexion

Conclusion

Ce tutoriel montre la manière la plus basique d'utiliser les données que nous stockons via une méta-boîte personnalisée réutilisable. Pouvoir enregistrer des données supplémentaires et les utiliser dans des thèmes et des plugins ouvre un tout nouveau monde de possibilités pour WordPress. À quoi vas-tu l’utiliser ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal