web-dev-qa-db-ja.com

WordPress Loopを使用して動的なコードをPost IDを使用して静的なコードに変換する

<?php  
if (is_single()) { ?>
<?php $imvi = get_post_meta(get_the_ID(), 't_Puck_imvi', true); ?>
<div class="class1" <?php if( 'none' === $imvi) { ?> style="display:none;" <?php } ?>>
    <div class="<?php if( 'show_vi' === $imvi  ||  'show_im' === $imvi) {echo 'video';} ?>">
        <?php if( 'show_vi' === $imvi || 'show_vint' === $imvi ) { ?>
            <div>
            <?php
                    // some code here
             ?>
        </div>
        <?php } ?>
        <?php if( 'show_image' === $imvi || 'show_image_notext' === $imvi ) {
            the_post_thumbnail( 'large');
        }
        ?>
    </div>  
</div>
<?php } ?>

上記はWordPressループ内のsingle.phpで実行されるコードです。すべて問題ありません。

しかし、私は他の何かを達成したいです。

代わりに、このコードをフロントページのどこかで実行するようにしたいが、ループ内ではなく、特定の投稿に基づいて実行したい。だから私たちはその記事のIDを使う必要があると思いますよね?

だから秘密はここのどこかにあると思う。

<?php $imvi = get_post_meta(get_the_ID(), 't_Puck_imvi', true); ?>

このw/oループを実現する方法を教えてもらえますか。

1
The WP Novice

動的なコードを静的なコードに変換するのはとても簡単な作業です。それはもう一つの複雑な方法です。

get_the_ID()を受け入れることができるWordPress関数は、IDとして文字列を受け入れることもできます。配列を受け入れるものもあります。

だから、単に回す

get_post_meta(get_the_ID(), 't_Puck_imvi', true);

get_post_meta( 123 , 't_Puck_imvi', true);

仕事をします。

注意

ループ内で使用できるすべての関数が投稿IDを受け入れるわけではありません。例としては、 the_post_thumbnail_url() 関数があります。これは、入力としてサイズのみを取ります。そのような場合は、 get_the_post_thumbnail_url() のように、同等の関数を使用するのが最も可能性があります。

1
Jack Johansson