web-dev-qa-db-ja.com

phpリンクデータをURLに変換 OR 投稿管理で編集リンクを隠す OR 管理者以外のすべてのユーザーの下書きを非表示にしましょうか?

私のウェブサイトでは、カスタマイズされたフロントエンドページに組み込まれたアップロードプロセスを介してユーザーがイベントをアップロードすることができます。

イベントのアップロード者として、自分が投稿したイベントを表示できるダッシュボードにもアクセスできるようにしたいと思います。

私は理想的にはedit.phpへのアクセスを削除したい - 私は自分のダッシュボードを通して、ユーザがpost.phpを編集またはアクセスできないようにしたくない。私は彼らにカスタマイズされたフロントエンドアップロードを通してイベントをアップロードさせたいだけです。

ソリューションの可能性1

ボタンの形で管理サイドバーのメニューにこの情報を追加する方法を学ぶことができれば、私はコントリビュータロールの編集を完全に無効にしてもダッシュボードからイベントリスナに投稿を表示する方法があります。ダッシュボード(全ユーザー用)このコードは私がウィジェットで見つけたリンクから来ました:

<a href="<?php echo get_author_link( $echo = false, $current_user->data->ID; ?>LINKED TEXT HERE</a>

AG Custom adminメニューボタン追加機能を使って追加しようとしましたが、うまくいきませんでした。

この役割ではurlリンクを介してedit.phpにアクセスできないため、上記が私にとって理想的な解決策になります。

1つ後退したのは、フロントエンドに投稿を表示し、投稿がまだ下書きの場合は編集ボタンを表示することです。彼らが閲覧しているフロントエンドページからEDITボタンを削除したいのですが、このロールは公開された投稿を編集できないため、ドラフト状態でのみ表示されると思います(私はそれを再確認する必要があります)。ユーザー投稿であっても、最初に承認したものだけを公開することを望んでいるので、送信後に編集できないようにします。

誰かが手伝ってくれるなら、私は自分でそれをうまくやることができると思います。

ソリューションの可能性2

そのため、編集を完全に禁止するためにロールマネージャを使用すると、edit.phpへのすべてのアクセスが削除されます。これは上の例では問題ありません(私が管理者サイドバーにすべての作者の投稿を表示するためにそのリンクを追加できる場合)。しかし、私は本当にイベントアップローダーが彼らのイベントのリストを見て、それぞれを見ることができることを望みます。イベントがビュー機能と同様にedit.phpに既にリストされているので、上のexpのようにフロントエンドのリストにリンクすることができないならEdit.phpはそれが起こるために起こるべき2番目に良い場所と思われます。リンクの編集を許可したくないので、承認するまで投稿のタイトルにそのリンクがあります。

私は投稿を編集するためにリンクを無効にできるかと思いました。 (post.phpまで)投稿のテーブルの各行のタイトル(または私の場合はイベント)に組み込まれているので、それは人々がその画面にアクセスするのを阻止するでしょう。しかし、私は、しかし、彼らがURLに '/edit.php'を貼り付けても画面がまだアクセス可能であることを解決しなければならないでしょう。私はquickedit and editを削除し、edit.phpの一番上にあるバルクフィルタから編集しました。

ソリューションの可能性3

もう一つの可能​​性のある修正は投稿が投稿者によって投稿された(私によって承認された)、edit.phpスクリーンの投稿タイトルのこのリンクが実際に消えるという事実を利用します!

つまり、誰かがテーマ内の関数やコアファイルにも貼り付けることができるコードを知っていれば(どちらの方法でも構いません)、管理者だけがドラフトステータスの投稿を投稿できるようにします。 edit.phpの投稿リストにあるので、投稿者がフロントエンドにイベントを投稿すると、それが公開されるまで自分の投稿画面に表示されません。 !

お時間をいただきありがとうございます。私は完全に立ち往生している、私はこれらのオプションのいずれかに対する解決策を見つけることができない、これが私がそれぞれに得ることができる限りこれ!この挑戦を手伝ってくれる人がいたら、私はとてもSO感謝します。本当に困惑しています。

私はphpのエキスパートではありませんが、私は便利で手ごろな知識を持っていて、他の人からの解決策や解決策を見つけるのが得意です。白い旗!広い世界で私たちのそこからのどんなヒントでも私は熱心に見ます!

もう一度ありがとうキー

................................................ .....................................

その他の注意事項

  • 私はwordpress v3.1.1を使っています
  • 私は自分の投稿を管理リーダーを使用しています
  • 私はメディアライブラリを隠しているので、寄稿者は自分の写真しか見ることができません。
  • ロールマネージャを使用してロール制限に対処します
  • カテゴリー制限に対処するためにrolescoperも使用します
  • 画面を調整するために管理およびグローバル画面オプションを使用します
  • AGカスタム管理を使用して管理画面を調整する
  • 他の機能やプラグインからのヒープと一緒に。

イベントアップローダにダッシュボードへのアクセスを許可したいので、バックエンドで編集(またはPOST.php)へのアクセスを隠すというこの問題の解決策としてダッシュボード全体を非表示にしたくありません。

5
user14275

私がこの権利を理解している限り、あなたはダッシュボード以外には反対側に到達する可能性を無効にしたいです。

それでは、ここにあなたのための短いプラグインがあります。

<?php
! defined( 'ABSPATH' ) AND exit;
/* Plugin Name: (#45989) »kaiser« Allow Dashboard only access */

function wpse45989_access_dashboard_only()
{
    if (
        ! isset( get_current_screen()->id )
        OR 'dashboard' !== get_current_screen()->id
        )
    {
        // Lets limit this to only specific user roles
        if ( current_user_can( 'ROLE_NAME_HERE' ) )
            exit( wp_redirect( admin_url() ) );
    }
}
add_action( 'current_screen', 'wpse45989_access_dashboard_only', 100 );
1
kaiser