Получить идентификатор сообщения текущего вошедшего в систему пользователя и добавить ссылку в меню

Я использую плагин под названием менеджер заданий wp, который создает «задания» в виде постов WordPress. Я ограничиваю количество заданий, которое может иметь пользователь, одним и хотел бы добавить прямую ссылку на свою работу в меню навигации.

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

Редактировать: Если я могу просто получить ссылку на отдельный пост текущего вошедшего в систему пользователя и добавить его в меню, я полагаю, что могу добавить ссылку для редактирования внутри самого поста.

URL задания на редактирование создается динамически следующим образом (в цикле)

 <?php foreach ( $jobs as $job ) : ?>
<tr>
<td class="actions">
<ul class="job-dashboard-actions">
<?php
$actions = array();
switch ( $job->post_status ) {
case 'publish' :
$actions['edit'] = array( 'label' => __( 'Edit', 'wp-job-manager' ), 'nonce' => false );
break;
}
$actions           = apply_filters( 'job_manager_my_job_actions', $actions, $job );
foreach ( $actions as $action => $value ) {
$action_url = add_query_arg( array( 'action' => $action, 'job_id' => $job->ID, ) , 'http://www.mywebsite./edit-my-profile/' );
if ( $value['nonce'] ) {
$action_url = wp_nonce_url( $action_url, 'job_manager_my_job_actions' );
}
echo '
<li><a  href="' . esc_url( $action_url ) . '" class="job-dashboard-action-' . esc_attr( $action ) . '">' . esc_html( $value['label'] ) . '</a></li>
';
}

Это сгенерировало такую ​​ссылку http://www.mywebsite.com/edit-my-profile/?action=edit&job_id =Я БЫ так что, если я попытался получить идентификатор поста текущего автора и добавить его к этому URL, а затем добавить его в меню, но я не могу найти способ получить идентификатор поста текущего вошедшего в систему пользователя вне поста петля.

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

function username_nav($action_url) {
return $menu = str_replace('editprofile', $action_url, $menu);
}

add_filter( 'wp_nav_menu', 'username_nav' );

Какие-либо предложения? Заранее спасибо!

0

Решение

Если я правильно читаю ваш вопрос … вы хотите, чтобы все сообщения были созданы авторизованным пользователем? В твоем случае это будет только один пост? Если это так, вы хотите что-то вроде этого:

    global $current_user;
$args = array(
'post_type'      => 'name of job custom post type',
'author'         => $current_user->ID,
'status'         => 'publish',
'posts_per_page' => 1
);
$jobs = get_posts( $args );

Вам может понадобиться или не понадобиться глобальный $ current_user, но это не повредит. Выше будет возвращено одно опубликованное сообщение, автором которого является зарегистрированный в данный момент пользователь. Просто вставьте подходящее имя типа поста, так как я не знаю, что этот плагин генерирует для имени.

ОБНОВИТЬ

Чтобы сгенерировать ссылку на этот пост и добавить ее в конец текущей навигации, вы должны использовать что-то вроде:

function new_nav_menu_items( $items ) {
global $current_user;
$args = array(
'post_type'      => 'job_listing',
'author'         => $current_user->ID,
'status'         => 'publish',
'posts_per_page' => 1
);
$jobs = get_posts( $args );
$link = '<li><a href="' . get_permalink( $jobs->ID ) . '">Your Job</a></li>';
// add link to the end of the menu
$items = $items . $link;
return $items;
}
add_filter( 'wp_nav_menu_items', 'new_nav_menu_items' );

Если вам нужна ссылка где-то особенная внутри меню, вам нужно прибегнуть к пользовательскому меню.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]