获取当前登录用户的帖子ID,并向菜单添加链接


Get post ID of current logged in user and add a link to the menu

我正在使用一个名为wp作业管理器的插件,它将"作业"创建为wordpress帖子。我将用户可以拥有的作业数量限制为一个,并希望在导航菜单中添加到其作业的直接链接。

我还想添加一个编辑链接,它是使用作业的post-id动态生成的。看到用户只有一个帖子,我相信这是可行的。

编辑:如果我甚至可以获得当前登录用户的单个帖子的链接并将其添加到菜单中,我相信我可以在帖子本身中添加编辑链接

编辑作业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=id所以如果我尝试获取当前作者的帖子id,并将其附加到该url,然后将其添加到菜单中,但我似乎找不到在帖子循环之外获取当前登录用户的帖子id的方法。

因此,我尝试使用全局$actionurl变量,并使用此函数将其添加到菜单中,但它只是破坏了菜单。

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

有什么建议吗?提前感谢!

如果我没看错你的问题。。。你想获得当前登录用户撰写的所有帖子吗?在你的情况下,它将永远只是一个帖子?如果是这样的话,你想要这样的东西:

    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' );

如果你想在菜单中找到一个特别的链接,你需要使用自定义的菜单助行器。