J'ai trop de données stockées dans des champs personnalisés que je ne souhaite pas récupérer lors du chargement de la page. Je donnerais plutôt à l'utilisateur la possibilité de charger les valeurs des champs personnalisés au clic, éventuellement avec ajax.
Y a-t-il un moyen efficace de faire cela?
Je n'ai pas encore de code, juste la boucle wp. Je pense à mettre les requêtes de champs personnalisés dans un fichier php séparé, mais je ne sais pas comment établir une connexion entre single.php et le fichier séparé. (charger le fichier avec ajax n'est pas un problème.)
UPDATE: Je n'ai pas besoin d'ajax, cela me déroute jusqu'à présent. Je souhaite simplement afficher les champs personnalisés associés à l'article sur un autre modèle de page. J'y pense comme si les champs personnalisés étaient les "enfants" d'un article donné et que cliquer sur un lien chargerait une page contenant uniquement les champs personnalisés.
Merci.
Je ne sais pas si vous avez déjà trouvé une réponse à cette question depuis le mois de 2011, mais j'ai une idée sur la façon de récupérer les données.
Et si vous créez un fichier php très simple qui prend l'identifiant de la publication comme variable get et affiche les champs personnalisés de la publication?
Cela ressemblerait à ceci:
<?php
require_once($_SERVER['DOCUMENT_ROOT'] . '/wp-load.php');
$post_ID = $_GET['id'];
$custom = get_post_custom($post_ID);
foreach ($custom as $key => $value) {
if (($key != '_edit_lock' && $key != '_edit_last'))
echo '<tr><td>' . $key . '</td><td>' . $value[0] . '</td></tr>';
}
?>
Cela créera une table de nom (Nom du champ personnalisé) et de la valeur (Valeur du champ personnalisé). Si vous ne souhaitez pas utiliser de tableau, vous pouvez bien entendu formater les bits internes comme vous le souhaitez. J'essaie juste de vous mettre sur la bonne voie. Notez également qu’il contient une déclaration if
. Je suis sûr que vous ne voulez pas afficher la valeur de verrouillage d'édition ou la dernière valeur d'édition.
Maintenant, sur comment obtenir cette information de la page:
Tout d'abord, vous devrez créer un bouton qui affichera les informations.
<a href="<?php echo bloginfo('template_directory'); ?>/custom-field-provider.php?id=<?php echo $post->ID; ?>" class="show-more">See More Information</a>
Et une boîte pour montrer ce que vous allez voir AJAX dans:
<div id="more-information-box" style="display: none;"></div>
Vous voudrez inventer une petite bonté jQuery cool ici.
$(document).ready(function () {
$('.show-all').on('click', function (e) {
// Since we're already passing the data through the link, we don't need to do anything else. Just pull the url from the link.
var url = $(this).attr('href');
// A simple jQuery.get function to get the data from the php script we wrote earlier
$.get(url, function (data) {
$('#more-information-box').hide().empty().append(data).fadeIn(500);
});
// And stop the link from actually going to the page.
e.preventDefault();
return false; // Better safe than sorry, right?
});
});
Et cela devrait le faire pour vous.
Je sais que c'était un peu long, mais je voulais vraiment couvrir toutes les bases. J'espère que cela vous a aidé.