Страница одного профиля WordPress с галереей изображений acf - PullRequest
0 голосов
/ 02 марта 2020

Добрый день, разработчики, я разрабатываю проект, который состоит из профилей пользователей с записью, созданной с полями из ACF, включая поле галереи изображений, моя проблема заключается в том, что ... поскольку я использую только одну страницу для отображения этого профиля, Галерея изображений делает его доступным даже для опции «прикреплен к сообщению», так как для этого я использую только одну страницу, например «/profile?userid=userid".

Есть ли другие полезные практики для Делаете это?

Я хотел бы получить предложения.

Редактирование профиля одной частью

function acf_profile_edit( $atts ) {

$a = shortcode_atts( array(
    'field_group' => ''
), $atts );

$uid = get_current_user_id();

if ( ! empty ( $a['field_group'] ) && ! empty ( $uid ) ) {
    $options = array(
        'post_id' => 'user_'.$uid,
        'field_groups' => array( intval( $a['field_group'] ) ),
        'return' => add_query_arg( 'updated', 'true', get_permalink() )
    );

    ob_start();

    acf_form( $options );
    $form = ob_get_contents();

    ob_end_clean();
}

return $form;
}

add_shortcode( 'profile_edit', 'acf_profile_edit' );

Редактировать ... Этот код решил мою проблему

add_filter('ajax_query_attachments_args', 'restrict_images_to_user');
function restrict_images_to_user($query) {
    $gallery_images = 'field_5e4d799b34145';
    $gallery_videos = 'field_5e5597e37f2c7';
    if ( isset($_POST['query']['_acfuploader'] )
        && ( isset($_POST['query']['_acfuploader']) == $gallery_images || isset($_POST['query']['_acfuploader']) == $gallery_videos ) ) {

        $author = get_current_user_id();
        $query['author'] = $author;
    }
    return $query;
}

1 Ответ

0 голосов
/ 02 марта 2020

Если вы используете одну страницу, используйте шаблон страницы с именем page-profile. php, бит после страницы должен соответствовать названию страницы, которую вы назначили.

Затем используйте WordPress Post L oop:

if (have_posts()) :
   while (have_posts()) :
      the_post();
         the_content();
   endwhile;
endif;

Вы можете назначить имя пользователя сообщениям, и сообщения l oop будут возвращать только материал, связанный с этим именем пользователя.

Другим способом было бы получите текущее имя пользователя, затем вы можете создать дополнительное поле acf с именем пользователя и затем выполнить проверку.

Это пример, и он будет абсолютно верным, но, возможно, сможет помочь вам с предложениями.

If(content && username == currentuser)
{
   $content = acf content;
}

, а затем на своей странице вы можете отобразить контент, который вам нужен, и будет только контентом для текущего имени пользователя, или вы также можете сделать это с идентификатором пользователя.

...