サポート » 使い方全般 » current_user ファイルをアップしたユーザーのみに表示される削除リンクを実装したい

  • 解決済 mnb3654

    (@mnb3654)


    いつもこちらのフォーラムにお世話になっています。またお力をお借りしたく質問いたします。

    現在ログインユーザーのみ閲覧可能な会員制サイトにおいて
    フロントエンドからのファイルアップロード機能を設置した投稿ページを作成しており
    ファイルのアプロードおよび、ファイルへのダウンロードリンクは問題なく実装できています。

    そこにファイルの削除機能を持たせた際の表示方法について試行錯誤しております。

    <?php if(current_user_can('delete_private_posts')) : ?>
    <a href="<?php echo get_delete_post_link( $image->ID ) ?>">削除</a>
    <?php endif; ?>

    として、アップロードしたユーザー自身(+管理者権限をもつadmin)のみが削除することができるURL

    ドメイン/テーマ/wp-admin/post.php?post=ID&action=trash&_wpnonce=nonce文字列

    が出力されており、ここまでは希望する動作通りです。

    ログインユーザー以外がアップしたファイルに対しての削除リンクはブランクとなっているのですが、
    この『ブランクとなるファイルに対しての削除リンク自体』を非表示としたいのです。

    つまり、自分がアップしたファイルにのみ『削除リンク』を表示させ、
    他ユーザーがアップしたファイルについての『(ブランクURLの)削除リンク』を非表示としたい(管理者権限をもつadminは全てのファイルについて削除することが可能)、が希望するものです。

    if($LoginUserName==$Username|| current_user_can('administrator')){

    あたりをアレンジしているのですが希望する動きにならず難儀しております。お力をお貸しください。
    どうぞよろしくお願いいたします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • こんにちは

    条件式は正しいと思います。$LoginUserName または $Username の値が正しく取得されていないのではないでしょうか?
    どのようなコードで取得していますか?

    トピック投稿者 mnb3654

    (@mnb3654)

    ishitakaさま

    いつもお世話になっております。ご返信、ありがとうございます。

    $LoginUserName または $Usernameの取得は検索して見つけた

    <?php 
    	$post = get_post($post_id);
    	if ($post){
    		$author = get_userdata($post->post_author);
    		$author->ID;
    		}
    	$LoginUserName = get_the_author_meta( 'user_login', $author->ID );
    	if($LoginUserName==$Username|| current_user_can('administrator')){//作成者と現在のログイン者が同じ場合
    ?>
    ここにコンテンツ
    <?php } ?>

    を参考にしています。
    そもそもpostに対してのコードのようなので、全くのお門違いかとも思うのですが。

    <?php
    $images = get_children(array(
        'post_parent' => get_the_ID(),
        'post_type' => 'attachment',
        'order' => 'ASC'));
    ?>

    として取得した情報を基にファイルをアップしたユーザーであれば削除リンクを表示したいと思っています。

    引き続きどうぞよろしくお願いいたします。

    $Username に値が代入されていないようですが・・・
    なお、ログインユーザーであれば下記のようなコードで取得することができます。

    $user = wp_get_current_user();
    $Username = $user->user_login;
    トピック投稿者 mnb3654

    (@mnb3654)

    ishitakaさま

    再度のご教示ありがとうございます。
    いただいたアドバイスのもと

    <?php {
    $author = get_userdata($image->post_author);
    $author->ID;
    $user = wp_get_current_user();
    $Username = $user->user_login;}
    $LoginUserName = get_the_author_meta( 'user_login', $author->ID );
    if($LoginUserName==$Username|| current_user_can('administrator')){
    ?>

    として意図する表示が実現できました!
    ご指摘頂けば当たり前のことだと理解する(つもりな)のですが、まだまだ至りません。

    この度も大変ありがとうございました!

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「current_user ファイルをアップしたユーザーのみに表示される削除リンクを実装したい」には新たに返信することはできません。