質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

解決済

カスタム投稿タイプをWP-Membersで鍵付きにできない。

yosuke_ir
yosuke_ir

総合スコア12

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

1回答

0評価

1クリップ

4506閲覧

投稿2018/11/22 10:46

編集2018/11/26 07:48

実現したいことと発生している問題

ワードプレスにて会員コンテンツを含むサイトを構築しております。

会員コンテンツの部分となるカスタム投稿タイプブログに対して、
非ログイン状態でアクセスしようとすると、
ログイン画面に移行する仕様を意図しておりますが
ブログ一覧画面と記事詳細画面が普通にアクセスできてしまいます。

今回利用しているプラグインが「WP-Members」というものですが
こちらのプラグインが通常カスタム投稿タイプでは
通常うまく利用できないと記事を見つけ、その改善策も実行してみましたが
それでもうまくいきません。
参照ブログ)
https://raisez.com/blog/wp-members

プログラムがぶつかり合ってうまく機能していないのか
そもそも設定が間違っているのか
原因の調査方法もわからず、お詳しい方にお力をお借りできればと考えております。

開発環境

【サーバー】さくらのVPS
【OS】CentOS Linux release 7.5.1804 (Core)
【Apache】Apache/2.4.6 (CentOS)
【php】PHP Version 7.1.20
テンプレート「Llorix One Lite」をベースにカスタマイズして構築しております。

その他利用しているプラグイン
All In One SEO Pack
Content Aware Sidebars
Llorix One Companion
PS Taxonomy Expander
MW WP Form
Custom Post Type Permalinks
Custom Post Type Widgets
PS Auto Sitemap
Redirection
Shortcodes Ultimate
zipaddr-jp

設定状況

「WP-Members」の設定画面
イメージ説明

function.phpの「カスタム投稿タイプ」の情報

// =========================== // = カスタム投稿 = // =========================== //カスタム投稿タイプの追加 add_action( 'init', 'create_post_type' ); function create_post_type() { //会員ブログ register_post_type( 'memberblog', array( 'label' => '会員ブログ', // 管理画面の左メニューに表示されるテキスト 'public' => true, // 投稿タイプをパブリックにするか否か 'has_archive' => true, // アーカイブを有効にするか否か 'menu_position' => 5, // 管理画面上でどこに配置するか今回の場合は「投稿」の下に配置 'supports' => array('title','editor','comments'), // 投稿画面でどのmoduleを使うか的な設定 'rewrite' => array( 'single' => 'menu', 'with_front' => false ) ) ); //会員イベント register_post_type( 'memberevent', array( 'label' => '会員向けセミナー', 'public' => true, 'has_archive' => true, 'menu_position' => 6, 'supports' => $EditorStyle, 'rewrite' => array( 'single' => 'menu', 'with_front' => false ) ) ); //会員ブログ-カテゴリ register_taxonomy( 'memberblog-cat', // 追加するタクソノミー名(英小文字とアンダースコアのみ) 'memberblog', // どのカスタム投稿タイプに追加するか array( 'label' => 'カテゴリー', // 管理画面上に表示される名前(投稿で言うカテゴリー) 'labels' => array( 'all_items' => 'カテゴリ一覧', // 投稿画面の右カラムに表示されるテキスト(投稿で言うカテゴリー一覧) 'add_new_item' => 'カテゴリの追加' // 投稿画面の右カラムに表示されるカテゴリ追加リンク ), 'hierarchical' => true, // タクソノミーを階層化するか否か(子カテゴリを作れるか否か) 'rewrite' => array( 'single' => 'menu/category', 'with_front' => false ), 'public' => true, 'show_ui' => true ) ); //会員ブログ-タグ register_taxonomy( 'memberblog-tag', 'memberblog', array( 'hierarchical' => false, 'update_count_callback' => '_update_post_term_count', 'label' => 'タグ', 'singular_label' => 'タグ', 'public' => true, 'show_ui' => true ) ); //会員向けセミナー-カテゴリ register_taxonomy( 'memberevent-cat', 'memberevent', array( 'label' => 'カテゴリー', 'labels' => array( 'all_items' => 'カテゴリ一覧', 'add_new_item' => 'カテゴリの追加' ), 'hierarchical' => true, 'rewrite' => array( 'single' => 'menu/category', 'with_front' => false ), 'public' => true, 'show_ui' => true ) ); //会員向けセミナー-タグ register_taxonomy( 'memberevent-tag', 'memberevent', array( 'hierarchical' => false, 'update_count_callback' => '_update_post_term_count', 'label' => 'タグ', 'singular_label' => 'タグ', 'public' => true, 'show_ui' => true ) ); }

function.phpの「カスタム投稿タイプのWP-Members」の情報

/** * Identify your custom post types here. */ function my_custom_post_types() { $settings = array( 'memberblog' => 'block', 'memberevent' => 'block', ); return $settings; } // You do not need to change anything after this. add_filter( 'wpmem_block', 'block_custom_post_types' ); function block_custom_post_types( $block ) { global $post; $post_type = get_post_type( $post ); $my_cpts = my_custom_post_types(); // If this is a single post and it is a defined custom post type. if ( is_single() && ( array_key_exists( $post_type, $my_cpts ) ) ) { // Get the custom post type block definition. $cpt_block = ( $my_cpts[ $post_type ] == 'block' ) ? true : false; // Check for meta overrides. $meta = get_post_meta( get_the_ID(), '_wpmem_block', true ); if( $cpt_block ) { if ( isset( $meta ) && $meta == 0 ) { $block = false; } } else { if ( isset( $meta ) && $meta == 1 ) { $block = true; } } } // Return block value. return $block; }

【追記】固定ページ一覧のブロック設定

イメージ説明

【追記】カスタム投稿記事のブロック設定

イメージ説明
イメージ説明

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。