2

Wordpress プラグインの開発中にこの問題が発生しました。私が取り組んでいる領域のコードスニペットは次のとおりです。

add_submenu_page( 'admin_manager',
                  'Add Event',
                  'Add Event',
                  'manage_options',
                  'add_event&action=modify',
                  'add_event_handler' );

ご覧のとおり、メニュー スラッグに '&action=modify' を追加したい

'add_event&action=modify'

しかし、それを行うと、Wordpress はアクセスを拒否し、適切な権限がないと言います。追加のパラメーターがなくても問題なく動作しますが、そのようなことを許可しないワードプレスに組み込まれているものはありますか?

考えや回避策はありますか?

4

1 に答える 1

2

slug 引数は、クエリ パラメータを受け取ることを意図していません。何らかのデフォルト アクションを設定する場合 (「アクション」クエリは、Wordpress 自体で使用される予約済みのキーワードである可能性が高いと思います)、次のように入力するようにページを設定してみませんか?パラメータがデフォルトであった場合は?

私の推測では、他のパラメーターも配置する必要があると思います。フォームを使用して (POST または GET 経由で) データを送信し、それらのパラメーターを使用してページにデータを入力できます。例えば:

<!-- SUBMENU PAGE -->
<form action="" method="GET">
    <label>Select Action: </label>
    <select name="jKern_action">
        <option value="modify">Modify</option>
        <option value="add">Add Event</option>
        <option value="delete">Delete Event</option>
    </select>
</form>
<?php
$action = isset($_GET['jKern_action']) ? $_GET['jKern_action'] : 'modify';
switch($action)
{
    case 'add' :
    ?>
        <!-- YOUR EVENT ADDING HTML HERE -->
    <?php
    break;
    case 'delete' :
    ?>
        <!-- DELETE HTML HERE -->
    <?php
    break;
    default :
    ?>
        <!-- DEFAULT MODIFICATION HTML -->
<?php
}
?>

これは完璧な例ではありませんが、ここで行われたことを収集できると確信しています。前述のように、slug 引数はクエリに入力するためのものではなく、GET および POST キー (およびオプション キーとメタ キー) にコードに固有の名前を付けて、名前の競合の可能性を最小限に抑える必要があります。

フォームに依存せずにサブメニュー ナビゲーションを適切に使用するもう 1 つの例は、次のようなものです。

<a href="?page=add_event&jKern_action=add">Add Event</a>
<a href="?page=add_event&jKern_action=modify">Edit Event</a>
<a href="?page=add_event&jKern_action=delete">Delete Event</a>
<?php
...
?>

プラグイン作成者が add_submenu_page() 関数を効果的に使用した方法の例をいくつか調べるのが最善の策ですが、ほとんどの場合、それをいじって、通常の Wordpress フローがどのように機能するかに慣れる必要があります。

頑張ってください。これが役立つかどうか教えてください。

于 2012-05-29T21:27:56.080 に答える