Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress 根据所选元数据在页面中显示作者_Wordpress - Fatal编程技术网

Wordpress 根据所选元数据在页面中显示作者

Wordpress 根据所选元数据在页面中显示作者,wordpress,Wordpress,我正在做一个新项目,注册用户可以在wordpress管理员的用户档案页面中选择多个职业。我已经能够将不同职业的复选框添加到用户配置文件页面,注册用户可以选中 在前端,我为每个职业创建了一个页面。我想要一个场景,在这个场景中,如果一个人进入一个名为“程序员”的页面,就会看到所有在他们的个人资料中检查“程序员”的作者。作者的信息,如头像、姓名和所有帖子的链接将以循环方式显示 我不知道该怎么办。希望你们能帮忙 -------------------------------编辑-------------

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

在前端,我为每个职业创建了一个页面。我想要一个场景,在这个场景中,如果一个人进入一个名为“程序员”的页面,就会看到所有在他们的个人资料中检查“程序员”的作者。作者的信息,如头像、姓名和所有帖子的链接将以循环方式显示

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

-------------------------------编辑---------------------------

在@AustinWinstanley提供的帮助下,这里是我的代码

$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.';
}
你可能想。大概是这样的:

// 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();
编辑:

对于前端形式:

<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>

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

我遇到了一个错误:
致命错误:对……中的非对象调用成员函数get_results()。。。。。。。。在第31行
我想要的是能够显示所有选择或选中“程序员”作为职业的用户。我想循环显示它们。感谢您抽出时间
事业
不是一个标准选项。您得到的错误是因为没有结果。如何保存职业数据?作为元密钥?值是数组吗?您必须更改用例的答案。没有足够的信息确切地知道元数据是如何保存的,但这是一个如何使用元键和值搜索用户的示例。您似乎没有理解我的要点。我想显示在页面中输入或选择程序员的作者列表。例如,如果有两位作者选择“程序员”作为他们的职业,那么这两位作者应该显示在页面中。再次感谢您的时间是的,这一部分包含在本解决方案中。它吸引了所有像程序员一样拥有职业生涯的用户(或您提供的任何内容。这将返回这些内容。到目前为止,它不会返回任何结果。查询是错误的,因为我不确定您是如何将“程序员”值保存给用户的。如果将其保存为元值,则会这样做。它似乎是以不同的方式保存的。可能是作为数组?没有关于如何保存数据的信息
career
对于用户,我无法帮助您准确查询。再次感谢您。我已编辑了我的问题。我将感谢您帮助我找到解决方案
<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>
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' );