web-dev-qa-db-ja.com

潜在的な顧客のために新しいテーマカスタマイザへのオープンアクセスを許可することは可能です(またはお勧めできますか)。

私は 新しいテーマカスタマイザ を使ってきました。デモテーマのカスタマイザ(ログインせずに)カスタマイザは次の場所にあります。

..wp-admin/customize.php

そのため、どういうわけかこのURLへのオープンアクセスを許可するが、バックエンドでは他には何もできないでしょう。おそらくこれにはセキュリティ上の問題があると思いますが、他の人が同じ考えを持っているかもしれないので、これを安全に行うことが可能な場合は、ここで議論が行われると思いました。

だから質問は:管理者の単一のページへのオープンアクセスを許可するための安全な方法はありますか?

7
byronyasgur

ただのアイデア:

  1. 「Guest」というユーザーを作成してユーザーIDを調べます。
  2. 潜在的なクライアントを管理者ページにリダイレクトするときは、ゲストユーザーとしてクライアントにログインしているスクリプトにリダイレクトします(コード#1)。
  3. Customize.phpではなく 'Guest'としてログインしたときにユーザーを許可しないようにWordPressアクションを追加しました。

コード1

$creds = array(
    'user_login' => 'guest_user',
    'user_password' => 'guest_user_plain_password'
);

$user = wp_signon( $creds, false );

if ( is_wp_error( $user ) )
    echo $user->get_error_message();
else
    wp_redirect( 'your_absolute_admin_url' ); exit;

コード#2

add_action( 'init', 'check_guest_user' );

function check_guest_user() {
    // Only when in backend and the guest user is logged in
    if ( is_admin() && user_id = get_current_user_id() ) {
        // Block other pages then custom.php
        global $pagenow;

        if ( 'customize' != $pagenow )
            exit();
    }
}

// replace user_id with the user ID of 'Guest'

このスクリプトの唯一の問題は、複数のユーザーがカスタマイザを試しているときです。ユーザーごとにカスタマイズ設定を保存すると、作業が非常に困難になります。

ただし、アカウントを登録しなくても特定のページにアクセスできるようにするのがソリューションです。

http://codex.wordpress.org/Function_Reference/wp_signon

1
Jasper Denkers