get_the_ID() doesnt work

时间:2020-01-25 作者:Faruk rıza

这是我的查询循环:

<?php
$query = new \\WP_Query( $args );
if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
?>
我想为此致电$post:

<div>
    <?php echo do_shortcode( \'[svg-flag flag="\' . get_post_meta( $post->ID, \'ozellikler_text\', true ) . \'"]\' ); ?>
</div>
我试着这样称呼它:

<?php
function get_the_ID() {
    $post = get_post();
    return ! empty( $post ) ? $post->ID : false;
}
?>
代码没有调用它。它给出了错误:

致命错误:无法重新声明get\\u the\\u ID()(以前在中声明

2 个回复
最合适的回答,由SO网友:Tim Elsass 整理而成

get_the_ID 是全局名称空间中的WordPress核心函数,因此不能再调用第二个函数get_the_ID 因为它不知道该用哪一个。您应该只调用get\\u the\\u ID(),而不编写新函数。

对于示例代码,可以执行以下操作:

<div>
    <?php echo do_shortcode( \'[svg-flag flag="\' . get_post_meta( get_the_ID(), \'ozellikler_text\', true ) . \'"]\' ); ?>
</div>

SO网友:Max Yudin

首先,你没有$post->ID, 你有$query->$post->ID 在您的WP\\U查询结果中:

<?php
$my_post_meta = get_post_meta(
    $query->$post->ID, // note this
    \'ozellikler_text\',
    true
);

echo do_shortcode( \'[svg-flag flag="\' . $my_post_meta . \'"]\' );
其次,正如错误文本中所写的那样,您不能重新声明已经声明的内置函数。只需使用它:

<?php
$my_post_meta = get_post_meta(
    get_the_ID(), // use the built-in function
    \'ozellikler_text\',
    true
);

echo do_shortcode( \'[svg-flag flag="\' . $my_post_meta . \'"]\' );