Текущий пользователь functions.php равен page_title

Можно ли создать функцию, которая получает post_meta страницы на основе логина текущего пользователя и совпадения заголовка страницы?

Поэтому, если пользователь «Test1» вошел в систему, он получит post_meta страницы с заголовком «Test1». Только когда есть совпадение, иначе ничего не делать.

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

function my_acf_load_field( $field ) {
    global $post;
    if ( 0 !== (int) $post->post_parent )
    {
         $some_value = get_post_meta( $post->post_parent, 'rwp_user_score', true );
        if ( ! empty ( $some_value ) )
            switch ( $field['name'] ) {
            case 'gemiddelde_score_hosting_provider':
            $field['value'] = '' . $some_value .'';
            break;
            }
    }
    return $field;
}

add_filter('acf/load_field', 'my_acf_load_field');

person user2812779    schedule 26.06.2018    source источник


Ответы (1)


Вы можете использовать функцию get_page_by_title() в сочетании с wp_get_current_user() и проверьте is_user_logged_in() внутри пользовательской функции, чтобы либо возвращать false, либо возвращать метаданные страницы, которые вы ищете, например:

function get_user_based_page_meta() {
    //return false if user is not logged in
    if (!is_user_logged_in()) {
        return false;
    }

    //get current user login
    $user_login = wp_get_current_user()->user_login;

    //get page by title - will retun null if no page exists
    $page = get_page_by_title($user_login);

    //check if get_page_by_title was successful and then return meta value, else return false
    if ($page != null) {
        return get_post_meta($page->ID, 'gemiddelde_score_hosting_provider', true;
    } else {
        return false;
    }
}

Затем вы можете использовать эту функцию внутри любого хука действия/фильтра, который вы используете, например:

$user_meta = get_user_based_page_meta();
if ($user_meta) {
    echo $user_meta;
} else {
    //do nothing - no user logged in, or no page with user_login as title found
}
person Frits    schedule 26.06.2018
comment
@ user2812779 в любое время :) Рад, что помог! - person Frits; 27.06.2018