私はWordPress内にカスタムポストタイプを作成しました。このカスタムポストタイプでは、プロダクトレンタルの価格を入力できるカスタムメタボックスがあります1日に1回または週に1回(2つのメタボックスがあります)。WordpressのPHPは投稿ごとにポストリスティングページにカスタムメタ情報を表示できません
カスタムポストタイプのすべての投稿を表示するページにこれらの価格を表示するとします。私のテーマには、メタ情報を表示したいポストのタイトルの直後にアクションフックがあります。
私はこの行動に取り掛かりましたが、私の情報は最初の投稿にのみ表示されています。
がfunction add_prices_to_products() {
global $post;
$price_per_day = get_post_meta($post->ID, "_per_day", true);
$price_per_week = get_post_meta($post->ID, "_per_week", true);
echo '<span class="sl_product_price per_day">£' . $price_per_day . '/day</span>';
echo '<span class="sl_product_price per_week">£' . $price_per_week . '/wk</span>';
}
add_action('layers_after_list_post_title', 'add_prices_to_products');
、誰もがそれだけではなく、それらのすべてに最初のポストに追加されている理由を教えてもらえます(私がいることを確認することができます:ここでは
は、私はメタ情報をエコーするために使用していたコードですメタ情報が正しく保存されていますか?)ここでは、テーマ(index.phpを)からのページのコードです:
<?php get_header(); ?>
<div class="container content-main archive clearfix">
<?php get_sidebar('left'); ?>
<?php if(have_posts()) : ?>
<div <?php layers_center_column_class(); ?>>
<?php while(have_posts()) : the_post(); ?>
<?php get_template_part('partials/content' , 'list'); ?>
<?php endwhile; // while has_post(); ?>
<?php the_posts_pagination(); ?>
</div>
<?php endif; // if has_post() ?>
<?php get_sidebar('right'); ?>
</div>
<?php get_footer();
それはフックが含まれているものですファイルコンテンツ-list.phpを参照しています。
global $post, $layers_post_meta_to_display; ?>
<article id="post-<?php the_ID(); ?>" <?php post_class('push-bottom-large'); ?>>
<?php do_action('layers_before_list_post_title'); ?>
<header class="section-title large">
<?php do_action('layers_before_list_title'); ?>
<h1 class="heading"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>
<?php do_action('layers_after_list_title'); ?>
</header>
<?php do_action('layers_after_list_post_title'); ?>
<?php /**
* Display the Featured Thumbnail
*/
echo layers_post_featured_media(array('postid' => get_the_ID(), 'wrap_class' => 'thumbnail push-bottom', 'size' => 'large')); ?>
<?php if('' != get_the_excerpt() || '' != get_the_content()) { ?>
<?php do_action('layers_before_list_post_content'); ?>
<?php do_action('layers_list_post_content'); ?>
<?php do_action('layers_after_list_post_content'); ?>
<?php } ?>
<?php do_action('layers_before_list_post_meta'); ?>
<?php /**
* Display the Post Meta
*/
layers_post_meta(get_the_ID(), NULL, 'footer', 'meta-info push-bottom'); ?>
<?php do_action('layers_after_list_post_meta'); ?>
<?php do_action('layers_before_list_read_more'); ?>
<?php do_action('layers_list_read_more'); ?>
<?php do_action('layers_after_list_read_more'); ?>
</article>
それはまた、私は、リスト内の各ポストの上にプレーンテキストをエコーすることができています「the_post」フックを使用したプラグイン
UPDATE
から引っ掛けていますことを言及する価値がありますしかし、私はまだエコーするために私のメタボックス情報を得ることができません。ここで私が今使っているものです:...あなたはこのような何かをしようと、ループ内の各項目にフックする必要が
add_action('the_post', 'my_custom_loop_start');
function my_custom_loop_start($query)
{
echo 'hello';
add_action('loop_end', 'my_custom_loop_end');
}
function my_custom_loop_end()
{
remove_action('layers_after_list_post_title', 'add_prices_to_products');
}
これらのページが表示されると予想されるページ(フック付き)のコードを表示できますか?完全な推測では、1ページに投稿のリストを表示しています。フックはタイトルの後に一度だけ呼び出されます。あなたの投稿を出力しているループ中ではありません。もっと見ることができれば分かりやすくなります:) –
こんにちは@SimonPollard - うん。私はあなたが言うことが正しいと思いますが、プラグインからコーディングする際の問題を解決する方法がわかりません –
$ postをチェックしました。print_r($ post)を使ってチェックしてください。 – Savan