フォーラムへの返信

11件の返信を表示中 - 1 - 11件目 (全11件中)
  • フォーラム: 使い方全般
    返信が含まれるトピック: ユーザー一覧を50音順に見出しつきで表示
    トピック投稿者 kokorog

    (@kokorog)

    できました!
    ひとまずシンプルに名前のみのリスト表示ですが、やりたかったことはできました。

    $yomi_first = mb_substr($yomi_conv, 0, 1);としなければいけないところを$yomi_first = mb_substr($yomi, 0, 1);になっていたため一覧が出なかったのでした…

    参考にした元のソースは読みをカタカナで入力する前提だったため$yomi_first = mb_substr($yomi, 0, 1);でも大丈夫だったのですが、自分のサイトは読みをひらがなで入れていたので$yomiで返ってくるのがひらがなでひとつもデータがないことになっていたという…

    最初に基本的な間違いを指摘してくださったishitaka様がいなかったらずっと見当違いなところを直して悩んでいたと思います。
    本当にありがとうございました!

    <?php
    
        //目次(行)
        $indexes_parents = array(
            "あ行" => "[ア-オ]",
            "か行" => "[カ-コ]",
            "さ行" => "[サ-ソ]",
            "た行" => "[タ-ト]",
            "な行" => "[ナ-ノ]",
            "は行" => "[ハ-ホ]",
            "ま行" => "[マ-モ]",
            "や行" => "[ヤ-ヨ]",
            "ら行" => "[ラ-ロ]",
            "わ行" => "[ワ-ン]",
            "その他" => ".*"
        );
        // 目次(五十音順)
        $indexes = array(
            "ア" => "[ア]", "イ" => "[イ]", "ウ" => "[ウ]", "エ" => "[エ]", "オ" => "[オ]",
            "カ" => "[カ]", "キ" => "[キ]", "ク" => "[ク]", "ケ" => "[ケ]", "コ" => "[コ]",
            "サ" => "[サ]", "シ" => "[シ]", "ス" => "[ス]", "セ" => "[セ]", "ソ" => "[ソ]",
            "タ" => "[タ]", "チ" => "[チ]", "ツ" => "[ツ]", "テ" => "[テ]", "ト" => "[ト]",
            "ナ" => "[ナ]", "ニ" => "[ニ]", "ヌ" => "[ヌ]", "ネ" => "[ネ]", "ノ" => "[ノ]",
            "ハ" => "[ハ]", "ヒ" => "[ヒ]", "フ" => "[フ]", "ヘ" => "[ヘ]", "ホ" => "[ホ]",
            "マ" => "[マ]", "ミ" => "[ミ]", "ム" => "[ム]", "メ" => "[メ]", "モ" => "[モ]",
            "ヤ" => "[ヤ]", "ユ" => "[ユ]", "ヨ" => "[ヨ]",
            "ラ" => "[ラ]", "リ" => "[リ]", "ル" => "[ル]", "レ" => "[レ]", "ロ" => "[ロ]",
            "ワ" => "[ワ]", "ン" => "[ン]",
            "その他" => ".*"
        );
    
        $site_url = network_site_url( '/' );
    
    	$args = array(
    	'exclude' => array( 1 ),// adminを除外
    	'orderby' => 'meta_value',
    	'meta_key' => 'yomi',
    	'order'    => 'ASC',
    	);
    
        $my_users = get_users($args);
        $user_data_set = array();
        // 上記の条件のユーザーがいる場合は下記を指定
        if ($my_users) {
    	  foreach( $my_users as $user ):
    		setup_userdata($user);
    		$uid = $user->ID;
    		$userData = get_userdata($uid);
    		$user_name =  $userData->display_name;
    		// ヨミガナの1文字目を取得する(濁点、半濁点は分離)
    		$yomi = get_user_meta($uid, 'yomi', true); // カスタムフィールドyomiの値を取得
    	        $yomi_conv = mb_convert_kana($yomi, 'h', 'UTF-8'); //全角ひらがなを半角カタカナに変換 ※ここで濁点、半濁点を分離する
    	        $yomi_conv = mb_convert_kana($yomi_conv, 'K', 'UTF-8');//半角カタカナを全角カタカナに変換
    		$yomi_first = mb_substr($yomi_conv, 0, 1); // 先頭の1文字を取得
    		$users['name'] = $user_name; //名前(ペンネーム)
    		$users['yomi'] = $yomi; //読み仮名
    		$users['yomi_first'] = $yomi_first; //読み仮名1文字目
    		$user_data_set[] = $users;
    
            endforeach;
        }
    
        // 目次(五十音順)ごとにユーザーのデータを格納する
        $user_data_set_index = array();
        foreach ( $user_data_set as $key => $val) {
            $char = mb_substr( $val['yomi_first'], 0, 1);
            foreach ( $indexes as $index => $pattern ) {
                if (preg_match("/^" . $pattern . "/u", $char)) {
                    $user_data_set_index[$index][] = $user_data_set[$key];
                    break;
                }
            }
        }
        //目次(行)ごとにユーザーのデータを格納する
        $user_data_set_index_parent = array();
        foreach ( $user_data_set_index as $key => $val) {
            foreach ( $indexes_parents as $indexes_parent => $patterns ) {
                if (preg_match("/^" . $patterns . "/u", $key)) {
                    $user_data_set_index_parent[$indexes_parent][$key] = $user_data_set_index[$key];
                    break;
    			}
    		}
        }
     ?>
    
        <!--ここから出力-->
        <div class="js-tab">
        <?php if ($user_data_set_index_parent):?>
        <ul class="js-tab-title">
            <?php
                foreach ($user_data_set_index_parent as $indexes_parent => $users): $x++; $x = sprintf("%02d",$x); ?>
            <li><a href="#anc-tab<?php echo $x; ?>"><h2><?php echo $indexes_parent; ?></h2></a></li>
            <?php endforeach; ?>
            </ul>
             
            <div class="js-tab-content">
            <?php
                foreach ($user_data_set_index_parent as $indexes_parent => $users): $i++; $i = sprintf("%02d",$i); ?>
                <div class="az_list" id="anc-tab<?php echo $i; ?>">
                <?php
                foreach ($users as $index => $user): ?>
                 
                 
                <h3><?php echo $index; ?></h3>
                <ul>
                <?php foreach ($user as $key => $val) { ?>
                <li><?php echo $val['name']; ?></li>
                <?php } ?>        
                </ul>
                <?php endforeach; ?>
                </div><!-- .az_list -->
                <?php endforeach; ?>
                </div><!-- .js-tab-content -->
                <?php endif; ?>
                </div><!-- .js-tab -->
        <!--ここまで出力-->
    フォーラム: 使い方全般
    返信が含まれるトピック: ユーザー一覧を50音順に見出しつきで表示
    トピック投稿者 kokorog

    (@kokorog)

    ishitaka 様

    ありがとうございます。
    $my_usersのデータは正常なのでそれ以下の処理の部分で何かやらかしているのだと思います…

    ちょっとがんばって見直してみたらなんとかできそうな気がします。
    修正できたら完成コードを張り付けられたらと思うので、(こんなニッチな仕様に需要があるか分からないですが)質問は解決済みにせずちょっとこのままにしておきます。

    フォーラム: 使い方全般
    返信が含まれるトピック: ユーザー一覧を50音順に見出しつきで表示
    トピック投稿者 kokorog

    (@kokorog)

    munyagu 様
    ishitaka 様

    ありがとうございます。
    最初はhtmlの出力の<?php if ($user_data_set_index_parent):?>で読み込みが止まってしまっていて、そのあとに読み込まれる<?php get_sidebar(); ?>も出てこないような状態だったのですが
    ishitaka 様に頂いた修正点を修正したところ正しいデータは出ていませんが最後までソースは読み込まれるようになりました。

    データがまだ全く出ておらず、その他のところだけ空データが出力されています…
    $user_data_set[]が間違っているんだろうなと見直しています。

    foreach( $users as $user ): の $users が未定義の変数。

    foreach( $my_users as $user ):でした…

    mb_convert_yomi() が未定義の関数。

    mb_convert_kana の間違いでした

    $user_data_set[] に何も値が代入されていない。

    $user_data_set[] = $users;に直しました。

    foreach ($users as $index => $user): の直後に全角スペースが挿入されている。

    気づいていませんでした。ありがとうございます。

    get_bloginfo(url) の url が未定義の定数

    $site_url = network_site_url( '/' );にしてget_bloginfo(url).$site_url.にしました。

    修正後のソース

    <!--投稿者一覧を表示-->
    <div class="cf">
    
    <?php
    
        //目次(行)
        $indexes_parents = array(
            "あ行" => "[ア-オ]",
            "か行" => "[カ-コ]",
            "さ行" => "[サ-ソ]",
            "た行" => "[タ-ト]",
            "な行" => "[ナ-ノ]",
            "は行" => "[ハ-ホ]",
            "ま行" => "[マ-モ]",
            "や行" => "[ヤ-ヨ]",
            "ら行" => "[ラ-ロ]",
            "わ行" => "[ワ-ン]",
            "その他" => ".*"
        );
        // 目次(五十音順)
        $indexes = array(
            "ア" => "[ア]", "イ" => "[イ]", "ウ" => "[ウ]", "エ" => "[エ]", "オ" => "[オ]",
            "カ" => "[カ]", "キ" => "[キ]", "ク" => "[ク]", "ケ" => "[ケ]", "コ" => "[コ]",
            "サ" => "[サ]", "シ" => "[シ]", "ス" => "[ス]", "セ" => "[セ]", "ソ" => "[ソ]",
            "タ" => "[タ]", "チ" => "[チ]", "ツ" => "[ツ]", "テ" => "[テ]", "ト" => "[ト]",
            "ナ" => "[ナ]", "ニ" => "[ニ]", "ヌ" => "[ヌ]", "ネ" => "[ネ]", "ノ" => "[ノ]",
            "ハ" => "[ハ]", "ヒ" => "[ヒ]", "フ" => "[フ]", "ヘ" => "[ヘ]", "ホ" => "[ホ]",
            "マ" => "[マ]", "ミ" => "[ミ]", "ム" => "[ム]", "メ" => "[メ]", "モ" => "[モ]",
            "ヤ" => "[ヤ]", "ユ" => "[ユ]", "ヨ" => "[ヨ]",
            "ラ" => "[ラ]", "リ" => "[リ]", "ル" => "[ル]", "レ" => "[レ]", "ロ" => "[ロ]",
            "ワ" => "[ワ]", "ン" => "[ン]",
            "その他" => ".*"
        );
    
        $site_url = network_site_url( '/' );
    
    	$args = array(
    	'exclude' => array( 1 ),// adminを除外
    	'orderby' => 'meta_value',
    	'meta_key' => 'yomi',
    	'order'    => 'ASC',
    	'meta_query' => array(
                   'key'     => 'sakka',
                   'value'   => 'author',
                   'compare' => 'like'
    		)
    	);
    
        $my_users = get_users($args);
        $user_data_set = array();
        // 上記の条件のユーザーがいる場合は下記を指定
        if ($my_users) {
    	  foreach( $my_users as $user ):
    		setup_userdata($user);
    		$uid = $user->ID;
    		$userData = get_userdata($uid);
    		// ヨミガナの1文字目を取得する(濁点、半濁点は分離)
    		$yomi = get_user_meta($uid, 'yomi', true); // カスタムフィールドyomiの値を取得
    	        $yomi_conv = mb_convert_kana($yomi, 'h', 'UTF-8'); //全角ひらがなを半角カタカナに変換 ※ここで濁点、半濁点を分離する
    	        $yomi_conv = mb_convert_kana($yomi_conv, 'K', 'UTF-8');//半角カタカナを全角カタカナに変換
    		$yomi_first = mb_substr($yomi, 0, 1); // 先頭の1文字を取得
    
    		$users['yomi'] = $yomi; //読み仮名
    		$users['yomi_first'] = $yomi_first; //読み仮名1文字目
    		$user_data_set[] = $users;
    
            endforeach;
        }
    
        // 目次(五十音順)ごとにユーザーのデータを格納する
        $user_data_set_index = array();
        foreach ( $user_data_set as $key => $val) {
            $char = mb_substr( $val['yomi_first'], 0, 1);
            foreach ( $indexes as $index => $pattern ) {
                if (preg_match("/^" . $pattern . "/u", $char)) {
                    $user_data_set_index[$index][] = $user_data_set[$key];
                    break;
                }
            }
        }
        //目次(行)ごとにユーザーのデータを格納する
        $user_data_set_index_parent = array();
        foreach ( $user_data_set_index as $key => $val) {
            foreach ( $indexes_parents as $indexes_parent => $patterns ) {
                if (preg_match("/^" . $patterns . "/u", $key)) {
                    $user_data_set_index_parent[$indexes_parent][$key] = $user_data_set_index[$key];
                    break;
    			}
    		}
        }
     ?>
    
        <!--ここから出力-->
        <div class="js-tab">
        <?php if ($user_data_set_index_parent):?>
        <ul class="js-tab-title">
            <?php
                foreach ($user_data_set_index_parent as $indexes_parent => $users): $x++; $x = sprintf("%02d",$x); ?>
            <li><a href="#anc-tab<?php echo $x; ?>"><h2><?php echo $indexes_parent; ?></h2></a></li>
            <?php endforeach; ?>
            </ul>
             
            <div class="js-tab-content">
            <?php
                foreach ($user_data_set_index_parent as $indexes_parent => $users): $i++; $i = sprintf("%02d",$i); ?>
                <div class="az_list" id="anc-tab<?php echo $i; ?>">
                <?php
                foreach ($users as $index => $user): ?>
                 
                 
                <h3><?php echo $index; ?></h3>
                <ul>
                <?php foreach ($user as $key => $val) { ?>
                <li><?php echo '<a href="'.$site_url.'profile/'.$user->user_nicename.'">'.$user->display_name.'</a>'; ?></li>
                <?php } ?>        
                </ul>
                <?php endforeach; ?>
                </div><!-- .az_list -->
                <?php endforeach; ?>
                </div><!-- .js-tab-content -->
                <?php endif; ?>
                </div><!-- .js-tab -->
        <!--ここまで出力-->
    フォーラム: インストール
    返信が含まれるトピック: WP-CLI と WordPress 4.6 で fatal error
    トピック投稿者 kokorog

    (@kokorog)

    この不具合が出たサイトは私はテーマやプラグインのカスタマイズを行っただけのもので、WP-CLIが入っているかどうかは未知でした。
    WP-CLIを誰も入れていないという回答だったため一度WordPress4.5にダウングレードした後、WordPress4.6をFTPで入れ直したところ正常になりました。
    WordPress4.6のアップデートの不具合だった可能性もありますが、解決しました。

    • この返信は7年、 7ヶ月前にkokorogが編集しました。
    フォーラム: インストール
    返信が含まれるトピック: WP-CLI と WordPress 4.6 で fatal error
    トピック投稿者 kokorog

    (@kokorog)

    追記:そもそものエラー内容は下記です。

    Fatal error: Call to undefined function apply_filters() in /Library/WebServer/Sites/example.dev/wp-includes/load.php on line 317

    トピック投稿者 kokorog

    (@kokorog)

    gblsm様

    考え方を教えて頂きありがとうございます!
    以下コードでできました。

    ・カテゴリ一覧

    <ul>
    <?php
    $args=array(
      'orderby' => 'name',
      'parent' => 0,
      );
    $categories=get_categories($args);
      foreach($categories as $category) {
      $myposts = get_posts( array(
    			'post_type' => 'post',
    			'category' => $category->term_id ,
    			'author' => $current_user->ID,
    			'numberposts' => -1
    		));
    		$mypostscount = count( $myposts );
    echo '<li><a href="' . esc_url( home_url( '/author/' .$current_user->display_name. '/?cat='. $category->term_id .'' ) ) . '">' . $category->name . '</a>&nbsp;(' . $mypostscount . ')</li>';
      }
    ?>
    </ul>

    ・特定タクソノミーのターム一覧(この場合items)

    <?php
    $taxonomy = 'items';
    $args = array(
        'parent' => 0,
        'pad_counts' => true,
        'hide_empty' => false
    );
    
    $terms = get_terms( $taxonomy , $args );
    if ( count( $terms ) != 0 ) {
    	echo '<ul>';
        foreach ( $terms as $term ) {
            $term = sanitize_term( $term, $taxonomy );
            $term_link = get_term_link( $term, $taxonomy );
            if ( is_wp_error( $term_link ) ) {
                continue;
            }
    		$myposts = get_posts( array(
    			'post_type' => 'post',
    			'taxonomy' => $taxonomy,
    			'term' => $term->slug,
    			'author' => $current_user->ID,
    			'numberposts' => -1
    		));
    		$mypostscount = count( $myposts );
            echo '<li><a href="' . esc_url( home_url( '/author/' .$current_user->display_name. '/?'.$taxonomy.'='. $term->slug .'' ) ) . '">' . $term->name . '</a>&nbsp;(' . $mypostscount . ')';
    
    		echo '</li>';
        }
    	echo '</ul>';
    }
    ?>

    ログイン中のユーザーの記事のみのカテゴリ(ターム)へのリンクの書き方が汎用性がなく無理やりでスマートではないですが、なんとかなってほっとしました。

    ありがとうございました。

    ユーザーの権限を「寄稿者」「投稿者」にすれば自分が投稿した記事しか編集できないのでWordPressの基本機能だけでできると思います。

    例えばサイト制作者(ユーザー権限「管理者」)が、仮の情報で各店舗の基本情報のページを作り、記事の作成者を各店舗のオーナーのユーザー(権限は「寄稿者」もしくは「投稿者」)に変更する。
    そうすると各店舗のオーナーは自分の店舗の情報だけ変更できるようになり、他のユーザーの記事は変更できません。

    これだけでやりたいことはできるのではないかと思います。

    トピック投稿者 kokorog

    (@kokorog)

    gblsm様

    ありがとうございます!
    頂いたコードで確かに意図した通りに表示することができました!

    メインクエリに限って正しく共著者を検索できるコードになっていました。さらに、メインクエリであっても query_posts を使って改変したメインクエリには効果がありません。

    なるほど、その後auther.phpで表示する著者の記事一覧ではPrimary Author以外の記事も一覧が取得できていることに気づいて、なぜ著者一覧のページで取得できないのか余計に分からなくなっていたのですが、どうしてなのかやっとわかりました。

    また、丁寧にコメントを書いてくださってありがとうございます。
    ソースだけでなく本体のどこを読めばいいのかまで教示していただいて、まだ完全には理解できていませんが、posts_where_filterを見たときに何をどうやっているのか、なぜそうなっているのか、辿る手がかりを頂けたのがうれしかったです。

    あまり日本ではメジャーでなさそうなプラグインなので回答を頂けてとても嬉しかったです。どうもありがとうございました。

    フォーラム: プラグイン
    返信が含まれるトピック: 写真が動いて見える効果のプラグイン

    mootools.jsとslideshow.jsの合わせ技ぽいですね。
    そのページと全く同じにしたいならばソースを見た方が早いです。

    拡大縮小のmootools+slideshowの使い方は下記が詳しいです。
    http://solidstate.jp/ImageDisplay/slideshow/script_161.html

    フォーラム: 使い方全般
    返信が含まれるトピック: gallery機能でhighslideを使いたい
    トピック投稿者 kokorog

    (@kokorog)

    自己解決しました。

    aタグの中からrelとtitleを書き出さないようにしたら正常に動くようになりました。

    フォーラム: 使い方全般
    返信が含まれるトピック: カレンダーに特定のカテゴリを

    プラグインで特定のカテゴリのカレンダーを表示できる
    「Event Calendar」というものがありますよ。

    http://wpcal.firetree.net/

11件の返信を表示中 - 1 - 11件目 (全11件中)