2010-11-15 13 views
1

Problème Wordpress simple - get_post_meta ne récupère pas les valeurs de champs personnalisées. Voici le code qui tire des champs personnalisés:Pourquoi get_post_meta ne fonctionne-t-il pas?

<img src="<?php echo FCG_PLUGIN_URL; ?>/scripts/timthumb.php?src=<?php echo get_post_meta($post->ID, 'slider_image', true); ?>&h=250&w=400&zc=1" alt="<?php echo $post_title; ?>" /> 

Dans la production, c'est le HTML que je reçois:

<img alt="Post Title" src="http://***.com/wp-content/plugins/jquery-slider-for-featured-content/scripts/timthumb.php?src=/&amp;h=50&amp;w=80&amp;zc=1"> 

Vous pouvez voir le src = point dans la chaîne est vide - comme si il n'y a rien de posté. J'ai isolé et fait écho juste le get_post_meta et c'est un espace. Je suis sûr à 100% qu'il est nommé correctement dans le post - y a-t-il quelque chose de flagrant qui me manque ici?

Répondre

1

Recherchez le terme "slider_image" dans les tables wp_posts et wp_postmeta en utilisant phpmyadmin. Ensuite, regardez la ligne qui l'a pour voir s'il y a quelque chose à l'intérieur.

Essayez également de modifier le nom de la valeur personnalisée en tant que test et de voir si cela fonctionne. J'utilise ce code exact de faire quelque chose de semblable à vous et il fonctionne:

<p><a href="<?php echo get_post_meta($post->ID, 'resume', true) ?>"><img src="<? bloginfo('template_url'); ?>/img/downloadresume.png"></a></p> 
0

En fait, cela vous a donné '/', ce qui n'est pas rien. Je dirais que c'est ce qui est sauvegardé en tant que 'slider_image'. Vérifiez le poste (ou la base de données directement).

+0

Vous avez absolument raison - je vais vérifier la base de données. – dmanexe

+0

Eh bien, il y a une table appelée "wp_postmeta" ... :) –

0

J'ai écrit quelques fonctions texturants simples qui vous permettent d'utiliser les méta-données (données personnalisées) dans votre thème. Vous pouvez écrire une fonction de modèle pour une clé méta-données/paire de valeurs, et le rendre dans un fichier thème comme ceci:

<?php the_meta_templates($meta_data_keys) ?> 
<?php the_template_for($meta_data_key) ?> 

Ne hésitez pas à vérifier les fonctions de base de github et leur donner un essai. Vous devrez les ajouter à votre fichier themes.php.

6

Si vous appelez get_post_meta dans la boucle, alors vous devriez appeler get_post_meta(get_the_id(), 'YOURKEY', true) au lieu de get_post_meta($post->ID, 'YOURKEY', true)

Des choses étranges qui se passe lorsque vous appelez get_post_meta dans une boucle. Dans certains thèmes, les développeurs piratent le $ post au début et get_post_meta cesse de fonctionner, c'est donc l'une des solutions pour ces cas particuliers.

+0

Cela a fonctionné pour moi! – Astrotim

+0

A travaillé pour moi aussi! –

1

En raison de la sauvegarde automatique. utilisez ces lignes pour empêcher la sauvegarde automatique et les privilèges de l'utilisateur.

// Bail if we're doing an auto save 
if(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return; 

// if our current user can't edit this post, bail 
if(!current_user_can('edit_post')) return; 
0
<?php get_post_meta(get_the_id(), 'YOURKEY', true) instead of get_post_meta($post->ID, 'YOURKEY', true) ?> 

Works pour moi!

0

pourrait-il être lié au bug

# 18210 (Update_post_meta est insensible à la casse sur meta_key, mais get_post_meta est pas) - WordPress Trac

https://core.trac.wordpress.org/ticket/18210

Il a expliqué les différentes expériences, selon sur db_collation ... (pardonnez-moi si c'est un non-sens total, je suis un débutant ..

Configuration de jeu de caractères et de collation de base de données WordPress | hakre sur wordpress http://hakre.wordpress.com/2010/12/26/wordpress-database-charset-and-collation-configuration/

0
<?php 
// Get custum fields and values 
$mykey_values = get_post_custom_values('my_key'); 
foreach ($mykey_values as $key => $value) { 
echo "$key => $value ('my_key')<br />"; 
} 

?> 
1

Vous pouvez également utiliser get_post_meta ($ boucle-> post> ID, 'yourkey', true); si vous utilisez $ loop = new WP_Query ($ args); ou quelque chose de similaire.

+0

J'ai trouvé cela très utile! – Daniel