mae-tel
フォーラムへの返信
-
フォーラム: 使い方全般
返信が含まれるトピック: 記事の取得がうまくできませんgblsmさま
ご教授ありがとうございます。大変助かります。私のコードでは「葉っぱ」という親タームまでしか分類されておらず、「キャベツ」や「小松菜」としてきちんと分類されて取得されずに、「葉っぱ」に属する投稿が全て取得されてしまっているということですよね。
ご指摘の通り、キャベツや小松菜を取得できれば表示できそうな気がします!!
WP_Queryの引数にタームを切り替えながら指定する、というのは
WP_Queryの引数のどれかを使用して、タームを絞り込むということでしょうか?array( 'terms' => array( 'キャベツ', '小松菜' ) )
このような引数を追加するということでしょうか
ターム名を一つ一つ書くのではなく自動的に判別して表示させるという引数は存在しますか?フォーラム: 使い方全般
返信が含まれるトピック: 記事の取得がうまくできませんフォーラム: 使い方全般
返信が含まれるトピック: コメント投稿者のリンクをauthorページにしたいkjmtsh様
ご回答ありがとうございます。
お返事が大変遅くなり、申し訳ありません…結果的に、ご教授いただいたコードで、コメント投稿者のリンクを
/author/ユーザーID にすることができました!$comment変数を使ってuser_idを取得できたのですね。
とても丁寧なご説明で分かりやすかったですし、助かりました。このトピックは解決済みとさせていただきます。
本当にありがとうございました。フォーラム: 使い方全般
返信が含まれるトピック: コメント投稿者のリンクをauthorページにしたいHinaloe様、ありがとうございます。
このコードはコアファイルのものだったのですね。すみません…
未知でお恥ずかしい限りです…。ログインユーザーのみコメントを投稿できる設定にしています。
add_filter('get_comment_author_url','add_comment_author_url'); function add_comment_author_url($url){ if($url == ''){ $author = get_comment_author(); $url = get_home_url() .'/author/'. $author; } return esc_url($url); } require_once ( ABSPATH . WPINC . '/registration.php' );
と、表記したときに、リンクが/autor/ニックネーム となるのは
コアファイルで $author = $user->display_name; となっていたからなのですね。知識不足のため、難しいことはわからないのですが…
/author/ニックネーム のリンクでもプロフィールページが表示できるようにするか、
もしくは$authorで取得した表示名から、ユーザーIDを引っ張ってくるということに
なるのでしょうか?おっしゃっていた’投稿の際にフィルタかける’というのが
どのようにすればわからないのでこのようなことしか浮かびません…汗フォーラム: 使い方全般
返信が含まれるトピック: コメント投稿者のリンクをauthorページにしたいHinaloe様 ご教授ありがとうございます。
get_comment_author関数で実現できる、ということなのですね!
function get_comment_author( $comment_ID = 0 ) { $comment = get_comment( $comment_ID ); if ( empty( $comment->comment_author ) ) { if ( $comment->user_id && $user = get_userdata( $comment->user_id ) ) $author = $user->display_name; else $author = __('Anonymous'); } else { $author = $comment->comment_author; } /** * Filter the returned comment author name. * * @since 1.5.0 * * @param string $author The comment author's username. */ return apply_filters( 'get_comment_author', $author ); }
ご提示いただいたこのコードを試してみたいのですが
functions.phpに記載したところ、
Parse error: syntax error, unexpected T_ELSE in ~~~functions.php on line 10
と表示されてしまいました。未熟のためどのように訂正すればよいのかわからずすみません。。。
フォーラム: 使い方全般
返信が含まれるトピック: コメント投稿者のリンクをauthorページにしたいHinaloe様
ご回答ありがとうございます。
まず根本的に関数の使い方が間違っているという事でしょうか?こちらの過去の質問を参考にさせていただきました。
[解決済み] コメントの投稿者名にリンクを設定したい
http://ja.forums.wordpress.org/topic/6285?replies=5この方法は、ブログ上の表示名がユーザー名の場合だと思うのですが
今回の場合、ブログ上の表示名をニックネームに設定していますので
そのまま使用させていただくことはできません。ですので、上記URLに記載されているコードを少しいじって、
単純にget_userdataでコメント投稿者のユーザー名を引っ張ってきて
それをURLの末尾に入れればいいと思っていたのですが
うまくいかず・・・。
なにかヒントをいただけたら幸いです。。フォーラム: 使い方全般
返信が含まれるトピック: コメント投稿者のリンクをauthorページにしたいHinaloeさま、ありがとうございます><!
add_filter('get_comment_author_url','add_comment_author_url'); function add_comment_author_url($url){ if($url == ''){ $author = get_comment_author(); $url = get_the_author_meta('user_url') } return esc_url($url); } require_once ( ABSPATH . WPINC . '/registration.php' );
ご教授いただいたget_the_author_meta関数を入れてみたのですが、
リンク自体が表示されなくなりました。
挿入の仕方が間違っているのでしょうか・・add_filter('get_comment_author_url','add_comment_author_url'); function add_comment_author_url($url){ if($url == ''){ $author = get_comment_author('user_nicename'); $url = get_home_url() .'/author/'. $author; } return esc_url($url); } require_once ( ABSPATH . WPINC . '/registration.php' );
こうしてみると、/author/匿名と表示されてしまいます。
匿名って何でしょうか・・・フォーラム: 使い方全般
返信が含まれるトピック: サイドバーにアクセスランキングを表示したいkjmtsh様、お返事大変遅くなり申し訳ありません。
<?php get_sidebar(); ?> <?php get_template_part('bottomArea'); ?> <?php get_footer(); ?>
この位置で正常に動作したため、
CSSでのレイアウト調整でなんとか解決することができました!未熟のため、おっしゃるとおり難しい事はさっぱり…ですが
wmp_get_popular()はもちろん今回のような事を想定して作られたわけではないし
私のコードが仕様と反していたということでしょうか…。何はともあれ、get_sidebarの位置を下部にし、CSSでレイアウト調整するだけで
解決いたしました。ご教授いただいたmikadukiman様 gatespace様 Takashi Kitajima様、kjmtsh様、
未熟な問題に付き合っていただき、有難うございました。この調子だとまた質問させていただくことがあるかもしれません…その時は
またご迷惑をおかけしますがよろしくお願いいたします。フォーラム: 使い方全般
返信が含まれるトピック: サイドバーにアクセスランキングを表示したいkjmtsh様、ご教授ありがとうございます!
突っ込みどころ満載ですみません・・・
テンプレートは、single-○○.phpというのを使用しているところのみ崩れています。
固定ページテンプレートではありません。しかし、おっしゃるとおりの位置に移動させてみたところ、(もちろんレイアウトは崩れましたが)
ランキングのほうも他のループも綺麗に取得&表示できました!これは…位置の問題ということですか…?
フォーラム: 使い方全般
返信が含まれるトピック: サイドバーにアクセスランキングを表示したいTakashi Kitajima様、ご教授ありがとうございます。
上記では、コードの上部分しか書いておりませんが
実際はsidebar.phpにこのように記述しています。<?php $posts = wmp_get_popular( array( 'limit' => 5, 'post_type' => 'photo', 'range' => 'all_time' ) ); global $post; if ( count( $posts ) > 0 ): foreach ( $posts as $post ): setup_postdata( $post ); ?> <ul> <li><a href="<?php the_permalink(); ?>"><img src="<?php the_field('mainphoto'); ?>" alt=""/></a><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endforeach; endif; wp_reset_postdata(); ?> <?php unset( $post );?> </ul>
これでランキングは問題なく表示されます。
ただ、他のループが崩れます。なんとなくですが、崩れてしまうループが入っているテンプレートの全体の記述に問題があるのかもしれません。
かなり長いですが見ていただくとありがたいです。<?php get_header(); ?> <?php get_template_part('top'); ?> <?php if(have_posts()):while(have_posts()):the_post(); ?> <?php endwhile;endif; ?> <div id="pankuzu"> <a href="<?php echo home_url(); ?>/">HOME</a> > <?php the_title(); ?> </div> <?php get_sidebar(); ?> <div id="0"> <?php if(have_posts()):while(have_posts()):the_post(); ?> <?php endwhile;endif; ?> //ここから下が崩れる <h2><?php the_title(); ?></h2> <div id="1"> <?php $posttype = 'photo'; $taxonomy = 'hoge'; $types = get_the_terms( $post->ID, $taxonomy, 'hide_empty=0&parent=2' ); $typenames = array(); foreach( $types as $type ){ array_push( $typenames, $type->slug ); } ?> <?php $args = array( 'showposts' => '1', 'orderby' => 'rand', 'post_type' => $posttype, 'tax_query' => array( array( 'taxonomy' => $taxonomy, 'terms' => $typenames, 'field' => 'slug', 'operator' => 'IN' ), 'relation' => 'AND' ), ); unset( $posttype ); unset( $taxonomy ); unset( $types ); unset( $typenames ); unset( $type ); ?> <?php query_posts($args); if ( have_posts() ) : while ( have_posts() ) : the_post();?> <a href="<?php echo get_permalink($post->ID); ?>"> <img src="<?php the_field( 'mainphoto', $post->ID ); ?>" alt="" /></p> <?php the_title(); ?> </a> <?php endwhile; else: ?> <img src="<?php bloginfo('stylesheet_directory');?>/images/noimage.jpg" alt="" /></p> <?php endif; ?> <?php wp_reset_query(); unset( $args ); ?> </div> <?php if(have_posts()):while(have_posts()):the_post(); ?> <?php endwhile;endif; ?> <?php echo do_shortcode('[cft format=1]'); ?> <h4><?php the_title(); ?></h4> <?php $term = array_shift(get_the_terms($post->ID, 'hoge')); ?> <?php $tax_posts = get_posts('post_type=other&taxonomy=hoge&exclude='.get_the_ID().'&term='.esc_html($term->slug)); if($tax_posts): ?> <div id="2"> <?php foreach($tax_posts as $tax_post): ?> <?php if ($post->ID != $tax_post->ID): ?> <?php endif; ?> <div class="3"> <a href="<?php echo get_permalink($tax_post->ID); ?>"> <img src="<?php the_field( 'mainphoto', $post->ID ); ?>" alt="" /> <?php echo esc_html($tax_post->post_title); ?> </a> </div> <?php endforeach; ?> <?php endif; ?> </div> //ここまで崩れる //ここから下は無事です <div class="4"> <?php $titlelabels = wp_list_categories('echo=0&title_li=&hide_empty=0&taxonomy=hoge&post_type=other&depth=2&hierarchical=0&exclude=45,105,116,117,118,119,120,121,122,123') ; ?> <?php $arg = array( 'showposts' => '9', 'orderby' => 'rand', 'parent' => '0', 'taxonomy' =>'hoge', 'post_type' => 'other' ); ?> <?php query_posts($arg); if ( have_posts() ) : while ( have_posts() ) : the_post();?> <a href="<?php echo get_permalink($post->ID); ?>"> <?php the_title(); ?> </a> <?php endwhile; ?> <?php endif; ?> <?php wp_reset_query(); unset( $arg ); ?> </div> <?php get_template_part('bottomArea'); ?> <?php get_footer(); ?> //テンプレート終了
スマートではないし汚いですが…
sidebar.phpに記載しているランキングのコードを消すと、
これらのループはきちんと動きます。。フォーラム: 使い方全般
返信が含まれるトピック: サイドバーにアクセスランキングを表示したいmikadukiman様 ありがとうございます。
現在、サイトは試作中ではありますが、カスタム投稿タイプに10件ほどの
テスト投稿を入れております。
gatespace様が提示してくださったコードと同じことをしたときは
きちんとアクセス数に応じたであろう記事群が取得&表示できましたので
コードや記事取得状況については問題はないかと思うのですが…
未熟なため柔軟な考えができず、申し訳ありません…。ちなみにテスト投稿を入れてから2カ月は経過しております…。。。
フォーラム: 使い方全般
返信が含まれるトピック: サイドバーにアクセスランキングを表示したいgatespace様、ご教授ありがとうございます。
最初は、ご掲示いただいているコードと同じやり方で記述しました。
もちろん、人気記事はきちんと5件、上から順番に表示されました。ですが、他のループが崩れてしまったのです。
めちゃくちゃ状態になってしまい、混乱したため
new WP_Queryを使ったらどうなんだろうみたいな安易な考えで今に至っております。ということは人気記事コード自体にはやはり問題はなくて、
他で使用しているループに問題があるということでしょうか…?フォーラム: 使い方全般
返信が含まれるトピック: サイドバーにアクセスランキングを表示したいmikadukiman様、ありがとうございます。
カスタム投稿タイプは実際にはphotoではありませんが、
記述の際は修正いたしました。ほかに原因があるのかもしれません…困りました…。。
フォーラム: 使い方全般
返信が含まれるトピック: サイドバーにアクセスランキングを表示したいmikadukiman様、ご教授ありがとうございます!
とても助かります。コードの上の部分のみ記載します、こういうことでしょうか?
<?php $rankpost = wmp_get_popular( array( 'limit' => 5, 'post_type'=> 'photo', 'range' => 'all_time' ) ); $rankpost = new WP_Query( $args ); while ( $rankpost->have_posts() ) : $rankpost->the_post(); ?>
コード記述、試させていただきましたが人気記事部分のみ何も表示されませんでした。
下記も試しましたが、他の表示部分が真っ白になったりして上手くいきませんでした…
<?php $rankpost = wmp_get_popular( array( 'limit'=>5, 'post_type'=> 'photo', 'range' => 'all_time' ) ); while ($rankpost->have_posts() ) : $rankpost->the_post(); ?>
きちんとサブループしているはずなのに、表示されないのはなぜなのでしょうか…
フォーラム: 使い方全般
返信が含まれるトピック: 記事ループ中に、別のカスタム投稿タイプの特定の値のみを取得したい