按前端自定义字段显示的自定义帖子列表

时间:2021-06-25 作者:Manuel Hermida

我正在尝试列出与客户端关联的自定义帖子。

我有一个CPT“;“评估”;使用ACF自定义字段“;客户;。

短代码将转到特定页面“;我的评估”;

到目前为止,我能够做到以下几点:

function lista_mis_valoraciones_shortcode() { 
$current_user_id = get_current_user_id();
$posts = get_posts(array(
    \'numberposts\'   => -1,
    \'post_type\' => \'assessment\',
    \'meta_key\'  => \'customer\',
    \'meta_value\'    => $current_user_id
));


// query
$the_query = new WP_Query( $args );

if( $the_query->have_posts() ){
    while( $the_query->have_posts() ) : $the_query->the_post(); 
            <a href="<?php the_permalink(); ?>">
                <img src="<?php the_field(\'event_thumbnail\'); ?>" />
                the_title(); 
        
    endwhile; 

endif; 
}
wp_reset_query();    // Restore global post data stomped by the_post(). 

}
add_shortcode( \'lista_mis_valoraciones\', \'lista_mis_valoraciones_shortcode\' );
欢迎任何帮助。提前非常感谢您。

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

主要问题是您混淆了两种查询帖子的方法。

您正在此处查询正确的帖子:

$posts = get_posts(array(
    \'numberposts\'   => -1,
    \'post_type\' => \'assessment\',
    \'meta_key\'  => \'customer\',
    \'meta_value\'    => $current_user_id
));
但是,您实际循环浏览的帖子将在此处查询:

$the_query = new WP_Query( $args );
在哪里$args 未定义,与之前查询的帖子无关。您可以将相同的参数传递给WP_Queryget_posts(), 但是有posts_per_page, 而不是numberposts:

function lista_mis_valoraciones_shortcode() {
    $current_user_id = get_current_user_id();
    $the_query       = new WP_Query(
        array(
            \'posts_per_page\' => -1,
            \'post_type\'      => \'assessment\',
            \'meta_key\'       => \'customer\',
            \'meta_value\'     => $current_user_id,
        )
    );

    if ( $the_query->have_posts() ) {
        while ( $the_query->have_posts() ) : $the_query->the_post();
            ?>

            <a href="<?php the_permalink(); ?>">
            <img src="<?php the_field( \'event_thumbnail\' ); ?>" />
            <?php the_title(); ?>

            <?php
        endwhile;
    }

    wp_reset_postdata();
}
add_shortcode( \'lista_mis_valoraciones\', \'lista_mis_valoraciones_shortcode\' );
请注意我所做的其他更改:

您将HTML与PHP混合在一起<img><a> 标签。要输出HTML,需要使用关闭PHP标记?> 然后用<?php 完成后endif 需要移除的

  • wp_reset_postdata() 在这种情况下比wp_reset_query().
  • 相关推荐

    即使以管理员身份也无法使用/wp-json/wp/v2/plugins API终结点

    以管理员身份使用基本身份验证时,我得到一个错误代码401 Unauthorized : [rest_cannot_view_plugins] Sorry, you are not allowed to manage plugins for this site. 尝试访问GET时出错/wp-json/wp/v2/plugins 我的服务器的终结点。我可以毫无问题地获取帖子和页面信息,但当我查询插件时,我得到了401错误。我已经确认,API调用中使用的用户ID应该能够使用CLI工具管理插件:# wp use