サポート » プラグイン » WP-Members メンバーシップによるアクセス制限

  • 解決済 wpkame

    (@wpkame)


    WP-Membersにてメンバーシップを有効にし、固定ページと投稿にアクセス制限を付与しています。

    各固定ページまたは投稿作成・編集時に選択するメンバーシップのリスト(select2によって表示されているメンバーシップの一覧)は、メンバーシップの登録順となっています。

    メンバーシップの設定「順序」は、メンバーシップ一覧画面と親のメンバーシップを選択する場合のリストには反映されますが、上記のアクセス制限設定時のリストには反映されません。

    メンバーシップ作成時の「順序」設定を、固定ページと投稿のアクセス制限設定時のリストに反映させる手段はありませんでしょうか?

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • こんにちは

    ざっと見た感じでは、適当な手段(フックや設定)は用意されていないようです。プラグインのサポートページで要望を出してみてはいかがでしょうか。

    サンプルコードを書いてみました。無理やり感半端ないので、参考までということで……

    add_action( 'wpmem_after_admin_init', function() {
    	global $wpmem;
    
    	remove_action( 'wpmem_admin_after_block_meta', array( $wpmem->membership->admin, 'add_product_to_post' ), 10, 2 );
    	add_action( 'wpmem_admin_after_block_meta', 'my_add_product_to_post', 10, 2 );
    } );
    
    // WP_Members_Products_Admin::add_product_to_post()
    function my_add_product_to_post( $post, $block ) {
    	global $pagenow, $wpmem;
    
    	$is_new = ( 'post-new.php' === $pagenow );
    
    	$product = $wpmem->membership->get_post_products( $post->ID );
    	$product = ( $product ) ? $product : array();
    	$values[] = __( 'None', 'wp-members' ) . '|';
    
    	$pages = get_pages( array( 'post_type' => 'wpmem_product', 'sort_column' => 'menu_order, post_title' ) );
    	foreach ( $pages as $page ) {
    		if ( $is_new ) {
    			if (
    				isset( $wpmem->membership->products[$page->post_name]['set_default_' . $post->post_type] )
    				&& 1 == $wpmem->membership->products[$page->post_name]['set_default_' . $post->post_type]
    			) {
    				$product[] = $page->post_name;
    			}
    		}
    		$values[] = $page->post_title . '|' . $page->post_name;
    	}
    
    	echo wpmem_form_label( array( 
    		'meta_key' => $wpmem->membership->post_meta,
    		'label' => __( 'Restrict access by membership:', 'wp-members' ),
    		'type' => 'multiselect'
    	) );
    	echo "<br />";
    	echo wpmem_form_field( array( 
    		'name' => $wpmem->membership->post_meta, 
    		'type' => 'multiselect',
    		'value' => $values,
    		'compare' => $product,
    		'class' => 'wpmem-product-select2 populate placeholder',
    	) );
    }
    トピック投稿者 wpkame

    (@wpkame)

    @ishitaka さん

    返信&サンプルコードありがとうございました。
    参考にします。・・と言いつつそのまま使用させて頂き反映されました!

    要望提出もしつつ、サンプルコードで行くか検討したいと思います。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「WP-Members メンバーシップによるアクセス制限」には新たに返信することはできません。