web-dev-qa-db-ja.com

ページを制限する方法[プラグインなし]

ワードプレスでページを制限する方法例えば:user [login]なしでゲームリストの5を見ることができます。 [example.com/game/]そして「もっと見る」をクリックした後、ユーザーはログイン/登録する必要がありますそしてその後、ユーザー/ 100全ゲームリストにアクセスできます。 [example.com/game/]

誰もがプラグインなしでそれを作ることを知っていますか?ありがとうございました

1
Juan Lie

あなたはショートコードでこれをかなり簡単にすることができます。 initにフックして、フックした関数にショートコードを追加します。

<?php
add_action('init', 'wpse57819_add_shortcode');
/**
 * Adds the shortcode
 *
 * @uses add_shortcode
 * @return null
 */
function wpse57819_add_shortcode()
{
    add_shortcode('restricted', 'wpse57819_shortcode_cb');
}

次に、コールバック関数で、ユーザーがログインしているかどうかを確認できます。ログインしている場合は、コンテンツを表示します。そうでない場合は、ログインメッセージを見せます。あなたはここであなたが望むことなら何でも文字通りにすることができます:彼らに内容(異なる「会員レベル」)を見せるためのユーザー能力をチェックし、それらに全体のログインフォームを見せる。簡単な例:

<?php
/**
 * Callback function for the shortcode.  Checks if a user is logged in.  If they
 * are, display the content.  If not, show them a link to the login form.
 *
 * @return string
 */
function wpse57819_shortcode_cb($args, $content=null)
{
    // if the user is logged in just show them the content.  You could check
    // rolls and capabilities here if you wanted as well
    if(is_user_logged_in())
        return $content;

    // If we're here, they aren't logged in, show them a message
    $defaults = array(
        // message show to non-logged in users
        'msg'    => __('You must login to see this content.', 'wpse57819'),
        // Login page link
        'link'   => site_url('wp-login.php'),
        // login link anchor text
        'anchor' => __('Login.', 'wpse57819')
    );
    $args = wp_parse_args($args, $defaults);

    $msg = sprintf(
        '<aside class="login-warning">%s <a href="%s">%s</a></aside>',
        esc_html($args['msg']),
        esc_url($args['link']),
        esc_html($args['anchor'])
    );

    return $msg;
}

プラグインとして

使用法

あなたのページ/投稿のどこかに:

[restricted]
Content for members only goes here
[/restricted]
4
chrisguitarguy

カスタムショートコードが役に立つかもしれませんこのプラグインを見る http://wordpress.org/extend/plugins/restrictedarea これは時代遅れですが、あなたの目的のためにコードを使うべきです

1
Andrea