0

ワードプレスの投稿として「ジョブ」を作成する wp ジョブ マネージャーと呼ばれるプラグインを使用しています。ユーザーが持つことができるジョブの数を 1 つに制限しており、ナビゲーション メニューにジョブへの直接リンクを追加したいと考えています。

ジョブの投稿 ID を使用して動的に生成される編集リンクも追加したいと思います。ユーザーが投稿できるのは 1 つだけであるように見えるので、これは実行可能だと思います。

編集: 現在ログインしているユーザーの単一の投稿へのリンクを取得してメニューに追加できれば、投稿自体に編集リンクを追加できると思います。

編集ジョブの 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' );

助言がありますか?前もって感謝します!

4

1 に答える 1

1

私があなたの質問を正しく読んでいれば...現在ログインしているユーザーが作成したすべての投稿を取得できるようにしたいですか? あなたの場合、投稿は 1 つだけですか?この場合、次のようなものが必要です。

    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 が必要な場合と必要でない場合がありますが、害はありません。上記は、現在ログインしているユーザーが作成者である公開済みの投稿を 1 つ返します。そのプラグインが名前に何を生成するかわからないので、適切なカスタム投稿タイプ名を入力してください。

アップデート

この投稿へのリンクを生成して現在のナビゲーションの最後に追加するには、次のようにします。

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

メニュー内の特別な場所にリンクが必要な場合は、カスタム メニュー ウォーカーを使用する必要があります。

于 2016-01-08T21:11:36.637 に答える