如何在仅分配给当前用户ID的搜索结果中显示用户配置文件中的ACF字段

时间:2019-06-09 08:43:55

标签: php wordpress search

我正在建立一个网站,一旦用户登录,他们将只看到管理员在后端填写的ACF。我在页面上填充了ACF,这很容易。我现在在尝试使这些字段可搜索时需要帮助,但结果只显示已登录用户的信息。更糟糕的是,这解释了我目前使用的是什么。

我在下面设置了ACF字段并可以工作。关于显示ACF字段的搜索,我正在使用Relevanssi插件显示这些字段,但现在似乎无法仅显示与当前登录用户相关的结果。

https://stackoverflow.com/questions/36787391/add-acf-fields-to-search-results-page-wordpress 

我还尝试了上面的链接,但是,我会再试一次。

$author_id = get_the_author_meta('ID');
$test  = the_field('test', 'user_' . $author_id);
$test2 = the_field('test2', 'user_' . $author_id);
$test3 = the_field('test3', 'user_' . $author_id);

$url = wp_get_attachment_url( $current_user->test2 );
$url2 = wp_get_attachment_url( $current_user->test3 );

echo $current_user->test 
echo $current_user->test2 
echo $current_user->test3 ?>

因此,如果用户ID为4,则搜索时仅​​显示与用户ID 4结果一起使用的ACF字段。我希望只在该用户的搜索页面上看到这些字段,而不是所有用户字段,因为除了当前登录的用户之外,其他任何人都不能看到该内容。

更新

一个更新,由于管理员只能在用户个人资料页面中分配值,因此每个ACF都将在管理员的ID下使用(即1),因此每次搜索时,它实际上都会拖拽每个使用1的ID。我只需要根据匹配的用户个人资料更改ID

/* Replace with custom Author meta box */
function wpse39084_custom_author_metabox() {  
    add_meta_box( 'authordiv', __('Author'), 'wpse39084_custom_author_metabox_insdes','post');  
 } 
add_action( 'add_meta_boxes', 'wpse39084_custom_author_metabox');  


    /* Include all users in post author dropdown*/
    /* Mimics the default metabox http://core.trac.wordpress.org/browser/trunk/wp-admin/includes/meta-boxes.php#L514 */
    function wpse39084_custom_author_metabox_insdes() {
          global $user_ID;
          global $post;
          ?>
          <label class="screen-reader-text" for="post_author_override"><?php _e('Author'); ?></label>

          <?php
            wp_dropdown_users( array(
                 'name' => 'post_author_override',
                 'selected' => empty($post->ID) ? $user_ID : $post->post_author,
                 'include_selected' => true
            ) );
    }

我需要解决此问题,因为管理员可以保存配置文件,就像其他用户正在保存一样,ID是否可以在usermeta中更改以使搜索正常进行

1 个答案:

答案 0 :(得分:0)

您好,这是一个对我有用的解决方案;

$author_id = get_post_field( 'post_author', $event->ID );

现在$ event是事件管理器中的事件对象。请注意,这也可能是$ post变量

希望有帮助:)