ACF:基于Cpt ui在模板中显示字段

时间:2015-09-03 22:26:21

标签: php wordpress wordpress-plugin advanced-custom-fields

我已经创建了一个基于CPT Ui的自定义帖子类型我试着在模板中显示那些项目,理想情况下我希望能够做到的是

www.siteurl.com/profile/profilename

因此,为什么我用以下代码创建了一个模板页面。

但我不知道如何将profilename放入我的查询帖子中,然后显示relivent数据这是我到目前为止已经厌倦了以获取id和永久链接显示但无济于事。

我真的希望能够像文档中所述那样做。理想情况下,我怀疑我最好的方法是检查用户是否在前端创建了一个配置文件,如果没有指示他们这样做?。

显示字段

<p><?php the_field('field_name'); ?></p>

http://www.advancedcustomfields.com/resources/code-examples/

<?php
/**
 * Template Name: Profile Page
 */

get_header(); ?>
<?php get_template_part( 'page', 'title' ); ?>


<div class="width-container">



    <?php while ( have_posts() ) : the_post(); ?>
        <?php get_template_part( 'content', 'page' ); ?>
    <?php endwhile; // end of the loop. ?>

    <?php

$posts = get_posts(array(
    'numberposts' => -1,
    'post_type' => 'profiles',
    'meta_key' => 'profilename',
    'meta_value' => 'david'
));

if($posts)
{
    echo '<ul>';

    foreach($posts as $post)
    {
        echo '<li><a href="' . get_permalink($post->ID) . '">' . get_the_title($post->ID) . '</a></li>';
    }

    echo '</ul>';
}

?>
    <?php get_sidebar(); ?>

</div><!-- close .width-container -->
<?php get_footer(); ?>

如果有人做了任何类似的事情,也许我应该使用当前用户但是我再也不知道如何将其链接到acf,因为我是该插件的新手

1 个答案:

答案 0 :(得分:0)

也许您可以尝试其他方法并使用WP_Query构建自定义查询。下面的示例使用 WP_Query 对象而不是 get_posts 函数,但参数和逻辑保持不变。

这意味着我们会找到所有帖子类型为profiles的帖子,其中“自定义字段”profilename等于david。在这种情况下,自定义字段“profilename”可以是文本字段,单选按钮或选择字段(保存单个文本值的内容)。

<?php
/**
 * Template Name: Profile Page
 */

 get_header();

 $user = get_post_meta($post->ID, 'profilename', true); // saving the field value in a $variable can help to build a more dynamic WP_Query... 

?>

<?php get_template_part( 'page', 'title' ); ?>

<div class="width-container">
 <h1>__('Listing Posts by:', 'text_domain');</h1>
 <?php echo '<p class="text-center">' . esc_html( $user ) . '</p>'?>;

<?php 
// args
$args = array(
 'numberposts'  => -1,
 'post_type'        => 'profiles',
 'meta_key'     => 'profilename',
 'meta_value'   => $user // retrieve the actual profilename field value
);


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

?>
<?php if( $the_query->have_posts() ): ?>
    <ul>
<?php while( $the_query->have_posts() ) : $the_query->the_post(); ?>
    <li>
       <a href="<?php the_permalink(); ?>">
         <?php the_title(); ?>
       </a>
    </li>
<?php endwhile; ?>
</ul>

<?php endif; ?>

<?php wp_reset_query();  // Restore global post data stomped by the_post(). ?>

<?php get_sidebar(); ?>

</div><!-- close .width-container -->
<?php get_footer(); ?>

上面的代码是如何使用名为'profilename'的自定义字段在模板中使用WP_Query对象在WP中查询(&#34;获取并显示&#34;)帖子的示例,其中值为'david'或者根据你的例子在字段中保存的任何数据。

也许你想显示你为WP默认用户个人资料页面创建的自定义字段的相关数据(值),如果是这种情况,你应该采用另一种方法,而不是查询帖子你只需输出用户可能填写其个人资料的字段。为此你可以Get values from a user

此示例将显示字段&#39; profilename&#39;来自ID为1的用户的值。

<?php the_field('field_name', 'user_1'); ?>

在循环中,您可以使用$user_ID = get_current_user_id();检索user_id,如下所示:

<?php
/**
 * Template Name: Profile Page
 */

 get_header();

 $user = get_post_meta($post->ID, 'profilename', true); // saving the field value in a $variable can help to build a more dynamic WP_Query... 

 $user_ID = get_current_user_id();

?>

<?php get_template_part( 'page', 'title' ); ?>

<div class="width-container">
 <h5>__('Listing Posts by:', 'text_domain');</h5>
 <h1><?php the_field('profilename', '$user_ID'); ?>;</h1> // this will retrieve the data/value saved in the 'profilename' field for the current user

... 

检查ACF's Query Posts by Custom Fields文档,了解使用本机WP函数从数据库中检索post对象数组的其他方法。