首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于所选元数据在页面中显示作者

基于所选元数据在页面中显示作者
EN

Stack Overflow用户
提问于 2017-04-27 04:26:38
回答 1查看 24关注 0票数 0

我正在做一个新项目,注册用户可以在wordpress Admin的用户配置文件页面中选择多个职业。我已经能够将不同职业的复选框添加到注册用户可以选中/选择的用户配置文件页面。

在前端,我为每个职业创建了一个页面。我想要一个场景,如果一个人应该去名为“程序员”的页面,例如,一个将显示在他们的个人资料中检查“程序员”的所有作者。作者的信息,如头像,姓名和所有帖子的链接将显示在一个循环中

我不知道该怎么做。希望你们能帮上忙。

到目前为止,在@AustinWinstanley提供的帮助下,我的代码如下

代码语言:javascript
复制
$user_query = new WP_User_Query( array( 'meta_key' => 'career', 'meta_value' => 'programmer' ) );

if ( ! empty( $user_query->results ) ) {
    foreach ( $user_query->results as $user ) {
        echo '<p>' . $user->display_name . '</p>';
    }
} else {
    echo 'No users found.';
}

通过上面的查询,将列出职业生涯字段的值为programmer的任何作者。如果Career的值字段是一个输入字段,则上面的代码适用。我不打算让career的值成为输入域,而是希望它成为作者可以选中多个值的复选框。

由于它不是输入字段,而是复选框,我该如何编辑此行以反映我想要的内容?

代码语言:javascript
复制
$user_query = new WP_User_Query( array( 'meta_key' => 'career', 'meta_value' => 'programmer' ) );
EN

回答 1

Stack Overflow用户

发布于 2017-04-27 05:47:50

您可能想要使用query users by meta data。如下所示:

代码语言:javascript
复制
// Set this value by whatever you're searching for
$career = 'programmer';

$args = array(
    'meta_query' => array(
        'relation' => 'AND',
        array(
            array(
                'key'     => 'career',
                'value'   => $career,
                'compare' => 'LIKE'
                // Or 'compare' => '='
            )
        )
    )
 );
$user_query = new WP_User_Query( $args );

$result = $wp_user_query->get_results();

编辑:

对于前端表单:

代码语言:javascript
复制
<form method='post'>
    <input name="careers[]" type="checkbox" value="programmer"> Programmer
    <input name="careers[]" type="checkbox" value="accountant"> Accountant
    <input name="careers[]" type="checkbox" value="manager"> Manager
    <button name="career-search">Search</button>
</form>

在您的插件或函数/包含中:

代码语言:javascript
复制
function careers_postback( $query ) {
    if( $query->is_main_query() && isset( $_POST['career-search'] ) ) {
        $careers = $_POST['careers']

        $meta_query = array();

        foreach( $careers as $career ) {
            $meta_query[] = array(
                'relation' => 'AND',
                array(
                    array(
                        'key'     => 'career',
                        'value'   => $career,
                        'compare' => '='
                    )
                )
            );
        }

        $args = array(
            'meta_query' => $meta_query
         );
        $user_query = new WP_User_Query( $args );

        $result = $wp_user_query->get_results();

        set_query_var( 'search-career-results', $result );

        // Here you would include your search template and call exit
        // In your template, use `get_query_var( 'search-career-results')
        // Then check if there are results and list them if there are.
    }
}
add_filter( 'pre_get_posts', 'careers_postback' );

这是大体的。我还没有完全测试它,因为我没有在编辑器中输入它。但这是复选框的完整解决方案,并通过使用数据的元数据获取用户。如果这在一般情况下不起作用,那么你正在做一些你没有透露的事情。比如不将职业保存到用户元数据中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43643909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档