gqevu6bsiz
フォーラムへの返信
-
フォーラム: 使い方全般
返信が含まれるトピック: 記事一覧の時のソートができませんgakusei さん
だいぶ理想の動きに近づいてきましたね!
先にまず、
<?php global $query_string; ?>
<?php query_posts( ‘posts_per_page=-1&’ . $query_string ); ?>
<?php if( have_posts()) : while( have_posts() ) : the_post(); ?>
<?php /* Start the Loop */ ?>
<?php endwhile; endif; ?>は外してください。
※このコードでは、ご希望の“評価順”等のソートは出来ない為。gakuseiさんのコードを応用すると、
<?php $uri = home_url( '/' ); ?> <?php if( is_category() or is_tag() ) : ?> <?php $term = get_queried_object(); ?> <?php if ( $term ) : ?> <?php $uri = get_term_link( $term , $term->taxonomy ); ?><br> <?php endif; ?> <?php endif; ?> ドロップダウン形式<br> <select name="original-sort-dropdown" onchange='document.location.href=this.options[this.selectedIndex].value;'> <option value="">ソート順を選択</option> <?php $Selected = ''; if( !empty( $_GET["meta_key"] ) && !empty( $_GET["order"] ) ) : if( $_GET["meta_key"] == 'ratings_average' && $_GET["order"] == 'DESC' ) : $Selected = 'selected="selected"'; endif; endif; ?> <option value="<?php echo add_query_arg( array( 'meta_key' => 'ratings_average' , 'order' => 'DESC' ), $uri ); ?>" <?php echo $Selected ?>>評価平均の多い順</option> <?php $Selected = ''; if( !empty( $_GET["meta_key"] ) && !empty( $_GET["order"] ) ) : if( $_GET["meta_key"] == 'ratings_average' && $_GET["order"] == 'ASC' ) : $Selected = 'selected="selected"'; endif; endif; ?> <option value="<?php echo add_query_arg( array( 'meta_key' => 'ratings_average' , 'order' => 'ASC' ), $uri ); ?>" <?php echo $Selected ?>>評価平均の少ない順</option> <?php $Selected = ''; if( !empty( $_GET["meta_key"] ) && !empty( $_GET["order"] ) ) : if( $_GET["meta_key"] == 'ratings_users' && $_GET["order"] == 'DESC' ) : $Selected = 'selected="selected"'; endif; endif; ?> <option value="<?php echo add_query_arg( array( 'meta_key' => 'ratings_users' , 'order' => 'DESC' ), $uri ); ?>" <?php echo $Selected ?>>評価をつけた人数の多い順</option> <?php $Selected = ''; if( !empty( $_GET["meta_key"] ) && !empty( $_GET["order"] ) ) : if( $_GET["meta_key"] == 'ratings_users' && $_GET["order"] == 'ASC' ) : $Selected = 'selected="selected"'; endif; endif; ?> <option value="<?php echo add_query_arg( array( 'meta_key' => 'ratings_users' , 'order' => 'ASC' ), $uri ); ?>" <?php echo $Selected ?>>評価をつけた人数の少ない順</option> </select> <?php // 何の指定もないときのデフォルトのソート順 $args = array( 'nopaging' => 1 , 'orderby' => 'meta_value' , 'order' => 'DESC' , 'meta_key' => 'ratings_average' ); if( is_category() ) { $args["cat"] = get_query_var( "cat" ); } elseif( is_tag() ) { $args["tag"] = get_query_var( "tag" ); } if( !empty( $_GET["meta_key"] ) ) { $args["meta_key"] = strip_tags( $_GET["meta_key"] ); } if( !empty( $_GET["order"] ) ) { $args["order"] = strip_tags( $_GET["order"] ); } ?> <?php query_posts( $args ); ?> <?php if ( have_posts() ) : ?> <?php while ( have_posts() ) : the_post(); ?> <div class="title"> <?php get_template_part('content','title'); ?> </div> <div class="rating"> <?php if ( $ave = get_post_meta( $post->ID, 'ratings_average', true ) ) { $user = get_post_meta( $post->ID, 'ratings_users', true ); $gouke = get_post_meta( $post->ID, 'ratings_score', true ); $width = $ave * 16; echo '<span style="width:' . $width . 'px;">Rating: </span>'; echo '平均:' . $ave . ' 総合:' . $gouke . ''; } else { echo '(未評価です。)'; } ?> </div> <?php endwhile; ?> <?php endif; ?>
このようになるのではないかと思います。
このコードの流れとしては、
- 現在の $uri を取得(categoryやtagページなら、そのURL)
- 取得した $uri にプラス、各ソートに対するクエリをセットしてドロップダウン形式で表示
- リクエストされたクエリで、query_posts()をおこなう(記事の再取得)
- 記事があり、かつ記事の分だけループ
という流れです。
※今までは上記の3番の記事の再取得が複数おこなわれた為、上手く理想のソートができなかったと考えられます。あと、query_posts、オプションの値等を熟読すると、結構分かってくるかもしれません。
http://wpdocs.sourceforge.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/query_posts
http://elearn.jp/wpman/function/query_posts.html
これで、動くことを願っております。。———————————-
それと、認証が必要なページの画面になってしまう、またはトップページに戻ってしまうとの事でしたが、ちょっと乱暴ですが、このトピックのお題が「記事一覧時のソート」ですので、今はとにかく理想通りに動くコードを参考にしたほうがいいかなと思います。
※時間がある時に、なぜ動かないのかをじっくり観察してみたほうがいいですね。
目星は、特にそれぞれのコードの URLにあたる 部分をvar_dump($url)してみたり。ですね。フォーラム: 使い方全般
返信が含まれるトピック: 記事一覧の時のソートができませんgakusei さん
①についてですが、wordpressではなくxamppの影響の気がします。
- wordpressのURL
- 戻されるURL(たなブログさん、Kzさんの両方)
- xamppのディレクトリ構成(インストールしているディレクトリの場所と、wordpressを設置しているディレクトリの場所
問題解決の為にこちらを教えていただけますか?
参考に、
xamppインストール : C:\Users\(PCユーザー名)\xampp
wordpress設置ディレクトリ : C:\Users\(PCユーザー名)\xampp\htdocs\wordpress
wordpressURL : http://localhost/wordpress/“平均評価の少ない順”を選択した際のURL : http://localhost/wordpress/?cat=1&meta_key=ratings_average&order=ASC
“平均評価の多い順序”を選択した際のURL : http://localhost/wordpress/?cat=1&meta_key=ratings_average&order=DESC私のxamppの場合はこのようになります。
②についてですが、
おそらくどこかのファイルでquery_posts等、別のソートが読み込まれて、
評価順のソートの命令文を上書きされている気がします。※下記を試す際は、必ずプラグインを全停止させてください。
一度、インストールしたままのtwentytwelveテーマにして、
私が貼り付けたcategory.phpのコードをインストールしたままのcategory.phpに全て貼り付けてみて、理想通り動くかどうか試してみてください。
※WP-PostRatingsだけは有効化してください。そしていくつかの記事に評価を予めつけておいてください。→これで動く場合は、gakuseiさんが使用しているテーマのどこかが影響していることになります。
functions.php等、query_postsやwp_queryの記載がないかどうか探してみてください。※エラー文が表示された場合、出来る限りその文章をそのまま記載してください。
フォーラム: 使い方全般
返信が含まれるトピック: 記事一覧の時のソートができません>gakusei さん
一歩前進してよかったですね!
先に上記3点についてですが、①私のコードで動くということはおそらく、http://ja.forums.wordpress.org/topic/13685?replies=8に記載されているたなブログさん(url直したバージョンで)、Kzさんのコードでも、header.phpに記載すると動くと思います。
動いた理由としてはheader.phpに記載することによって、category.phpやtag.php等に記載されている、何かしらの影響を受けていないからだと思われます。
②評価順でのソートにしようとしているんですね。
それであれば、そもそもあのコードで動かすのは難しいので、私のほうのcategory.phpの内容を全て貼り付けますので、divやcss等用途に合わせて変更して利用してみてください。<?php get_header(); ?> <section id="primary" class="site-content"> <div id="content" role="main"> <?php $uri = home_url( '/' ); ?> <?php if( is_category() or is_tag() ) : ?> <?php $term = get_queried_object(); ?> <?php if ( $term ) : ?> <?php $uri = get_term_link( $term , $term->taxonomy ); ?><br> <?php endif; ?> <?php endif; ?> ドロップダウン形式<br> <select name="original-sort-dropdown" onchange='document.location.href=this.options[this.selectedIndex].value;'> <option value="">ソート順を選択</option> <?php $Selected = ''; if( !empty( $_GET["meta_key"] ) && !empty( $_GET["order"] ) ) : if( $_GET["meta_key"] == 'ratings_average' && $_GET["order"] == 'DESC' ) : $Selected = 'selected="selected"'; endif; endif; ?> <option value="<?php echo add_query_arg( array( 'meta_key' => 'ratings_average' , 'order' => 'DESC' ), $uri ); ?>" <?php echo $Selected ?>>評価平均の多い順</option> <?php $Selected = ''; if( !empty( $_GET["meta_key"] ) && !empty( $_GET["order"] ) ) : if( $_GET["meta_key"] == 'ratings_average' && $_GET["order"] == 'ASC' ) : $Selected = 'selected="selected"'; endif; endif; ?> <option value="<?php echo add_query_arg( array( 'meta_key' => 'ratings_average' , 'order' => 'ASC' ), $uri ); ?>" <?php echo $Selected ?>>評価平均の少ない順</option> <?php $Selected = ''; if( !empty( $_GET["meta_key"] ) && !empty( $_GET["order"] ) ) : if( $_GET["meta_key"] == 'ratings_users' && $_GET["order"] == 'DESC' ) : $Selected = 'selected="selected"'; endif; endif; ?> <option value="<?php echo add_query_arg( array( 'meta_key' => 'ratings_users' , 'order' => 'DESC' ), $uri ); ?>" <?php echo $Selected ?>>評価をつけた人数の多い順</option> <?php $Selected = ''; if( !empty( $_GET["meta_key"] ) && !empty( $_GET["order"] ) ) : if( $_GET["meta_key"] == 'ratings_users' && $_GET["order"] == 'ASC' ) : $Selected = 'selected="selected"'; endif; endif; ?> <option value="<?php echo add_query_arg( array( 'meta_key' => 'ratings_users' , 'order' => 'ASC' ), $uri ); ?>" <?php echo $Selected ?>>評価をつけた人数の少ない順</option> </select> <?php // 何の指定もないときのデフォルトのソート順 $args = array( 'nopaging' => 1 , 'orderby' => 'meta_value' , 'order' => 'DESC' , 'meta_key' => 'ratings_average' ); if( is_category() ) { $args["cat"] = get_query_var( "cat" ); } elseif( is_tag() ) { $args["tag"] = get_query_var( "tag" ); } if( !empty( $_GET["meta_key"] ) ) { $args["meta_key"] = strip_tags( $_GET["meta_key"] ); } if( !empty( $_GET["order"] ) ) { $args["order"] = strip_tags( $_GET["order"] ); } ?> <?php query_posts( $args ); ?> <?php if ( have_posts() ) : ?> <header class="archive-header"> <h1 class="archive-title"><?php printf( __( 'Category Archives: %s', 'twentytwelve' ), '<span>' . single_cat_title( '', false ) . '</span>' ); ?></h1> <?php if ( category_description() ) : ?> <div class="archive-meta"><?php echo category_description(); ?></div> <?php endif; ?> </header><!-- .archive-header --> <?php while ( have_posts() ) : the_post(); get_template_part( 'content', get_post_format() ); endwhile; twentytwelve_content_nav( 'nav-below' ); ?> <?php else : ?> <?php get_template_part( 'content', 'none' ); ?> <?php endif; ?> </div><!-- #content --> </section><!-- #primary --> <?php get_sidebar(); ?> <?php get_footer(); ?>
③すみません、ちょっと分からないですね。
もしかしたら、xamppに絞ってぐぐってみると、見つかるかもしれませんね。フォーラム: 使い方全般
返信が含まれるトピック: 記事一覧の時のソートができません>gakuseiさん
リストでもドロップダウンでも、やはりトップページに戻されてしまいます。
お手数お掛けしてすみません、動きませんでしたか。
<?php global $query_string; ?> <?php query_posts( 'posts_per_page=-1&' . $query_string ); ?> <?php if( have_posts()) : while( have_posts() ) : the_post(); ?> <?php /* Start the Loop */ ?> <?php endwhile; endif; ?>
※global を念の為追記しました。
トップページに戻される原因について、私のほうで考えられる推測ですが、
- .htaccessが上手く機能していない
- query_stringで現在のqueryをうまく取得出来ていない
- 使用しているテーマ・及びプラグインの影響を受けている
もしよろしければ下記を試してみてください。
1. パーマリンク設定が上手く機能していないのかもしれないので、
一度パーマリンクを「デフォルト」の設定にして、同じようにトップページに戻されるかどうか試してみてください。
※設定がデフォルトだとしても、一度必ず「変更を保存」のボタンを押して下さい。念の為です。2.
<?php $uri = home_url( '/' ); ?> <?php if( is_category() or is_tag() ) : ?> <?php $term = get_queried_object(); ?> <?php if ( $term ) : ?> <?php $uri = get_term_link( $term , $term->taxonomy ); ?><br> <?php endif; ?> <?php endif; ?> リスト形式<br> <ul style="background: #EEE;"> <li><a href="<?php echo add_query_arg( array( 'orderby' => 'comment_count' , 'order' => 'DESC' ), $uri ); ?>">コメントの多い順</a></li> <li><a href="<?php echo add_query_arg( array( 'orderby' => 'comment_count' , 'order' => 'ASC' ), $uri ); ?>">コメントの少ない順</a></li> <li><a href="<?php echo add_query_arg( array( 'orderby' => 'post_date' , 'order' => 'DESC' ), $uri ); ?>">日付の新しい順</a></li> <li><a href="<?php echo add_query_arg( array( 'orderby' => 'post_date' , 'order' => 'ASC' ), $uri ); ?>">日付の古い順</a></li> </ul> ドロップダウン形式<br> <select name="original-sort-dropdown" onchange='document.location.href=this.options[this.selectedIndex].value;'> <option value="">ソート順を選択</option> <option value='<?php echo add_query_arg( array( 'orderby' => 'comment_count' , 'order' => 'DESC' ), $uri ); ?>'>コメントの多い順</option> <option value='<?php echo add_query_arg( array( 'orderby' => 'post_date' , 'order' => 'ASC' ), $uri ); ?>'>コメントの少ない順</option> <option value='<?php echo add_query_arg( array( 'orderby' => 'comment_count' , 'order' => 'DESC' ), $uri ); ?>'>日付の新しい順</option> <option value='<?php echo add_query_arg( array( 'orderby' => 'post_date' , 'order' => 'ASC' ), $uri ); ?>'>日付の古い順</option> </select>
このコードを、header.phpの<body>タグのすぐ下に記載して、
カテゴリ一覧のページやタグ一覧のページを表示して、クリックしてみて試してください。もしこの2の試しでソートが出来れば、category.php等に記載している何かが原因となります。
それでもトップページに戻されるようでしたら、gakusei さんの環境を、下記トピックを参考に出来るだけ、記載いただきたいです。
http://ja.forums.wordpress.org/topic/11794?replies=1
※私は下記の環境でソートできました。
- bitnami win vista
- wp:3.5
- php:5.3
- 使用テーマ:twentyeleven
フォーラム: 使い方全般
返信が含まれるトピック: 投稿画面に表示されるアイキャッチのサイズ変更nekofoxさん
高さの指定を固定する場合になりますが、
add_filter( 'admin_post_thumbnail_html', 'admin_post_thumbnail_html_width_edit'); function admin_post_thumbnail_html_width_edit( $content ) { // 幅高さ指定 (%での指定可) $def_width = "266"; $new_width = '100'; $new_height = '100'; if( strpos( $content , $def_width ) ) { // デフォルトの最大幅を変更 $content = str_replace( 'width="' . $def_width . '"' , 'width=' . $new_width , $content ); // 高さの指定を変更 $content = preg_replace( '/height="(.*?)"/' , 'height="' . $new_height . '"' , $content ); } return $content; }
こちらのコードで可能なはずです。
※幅が266以上の画像の場合のみ、幅と高さを指定できるようなコードにしています。全ての画像のアイキャッチの高さを指定する場合は、
if( strpos( $content , $def_width ) )
に関わる条件分岐を削除して使用ください。フォーラム: 使い方全般
返信が含まれるトピック: サイト内検索エンジンの削除/非表示こんにちは。
- the_widget( ‘WP_Widget_Search’
- get_search_form()
この2つのどちらかの記述はありませんか?
もしあれば、削除して確認してみてください。<div id=”subinfo”><form role=”search” method=”get” id=”searchform” action=”サイトのURL” >
<div><label class=”screen-reader-text” for=”s”>検索:</label>
<input type=”text” value=”” name=”s” id=”s” />
<input type=”submit” id=”searchsubmit” value=”検索” />
</div>
</form></div>このソースですが、おそらく正しくは
×検索エンジン
○wordpress標準の検索ウィジェット(またはwordpress標準の検索フォーム)だと思われます。
フォーラム: 使い方全般
返信が含まれるトピック: 投稿画面に表示されるアイキャッチのサイズ変更こんにちは。
最大横幅を調節はできるのですが表示サイズの設定はできません。
という部分はよく分からなかったのですが、
こういう事でしょうか?
※テーマ内のfunctions.php内に記載add_filter( 'admin_post_thumbnail_html', 'admin_post_thumbnail_html_width_edit'); function admin_post_thumbnail_html_width_edit( $content ) { // 幅を指定 (%での指定可) $new_width = '500'; // デフォルトの最大幅を変更 $content = str_replace( 'width="266"' , 'width=' . $new_width , $content ); // 高さの指定を削除 $content = preg_replace( '/height="(.*?)"/' , '' , $content ); return $content; }
フォーラム: 使い方全般
返信が含まれるトピック: 特定のカテゴリの投稿一覧を50音順にならべたいこんにちは。
<p> <?php wp_list_categories('orderby=name&order=asc&show_count=1&use_desc_for_title=0&child_of=69'); ?> </p>
こういう事でしょうか?
※パラメータに order=asc を追加しました。必要に応じて変更してください。パラメータ一覧はhttp://wpdocs.sourceforge.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/wp_list_categories#Parametersで確認できます。
フォーラム: 使い方全般
返信が含まれるトピック: リストマークを画像で表示する方法?こんにちは。
リストを画像で表示する方法ですが、記述は合っていると思います。
ただ、cssの内容をphpに書いているなら、画像までのパスが間違っていると思います。
※テンプレート内のimg/という記述でない為。- style.cssに上記のcssを記述するならそのままで表示されました
- index.phpやpost.php等に直接cssを記述するなら、background-imageのurlの値が変わります。
url(<?php bloginfo('template_directory'); ?>/img/blglist.png);
フォーラム: 使い方全般
返信が含まれるトピック: 記事一覧の時のソートができませんあなたの投稿を見て、iyaiyaさんのトピックに返信しました。
たぶん、あのコードでgakuseiさんのご希望のソートが出来るんじゃないかと思います。
http://ja.forums.wordpress.org/topic/13685?replies=9
を見てみてください。フォーラム: 使い方全般
返信が含まれるトピック: 記事一覧をドロップダウンリストでソートしたいこんにちは。
以下のコードではどうでしょうか?
<?php $uri = home_url( '/' ); ?> <?php if( is_category() or is_tag() ) : ?> <?php $term = get_queried_object(); ?> <?php if ( $term ) : ?> <?php $uri = get_term_link( $term , $term->taxonomy ); ?><br> <?php endif; ?> <?php endif; ?> リスト形式<br> <ul style="background: #EEE;"> <li><a href="<?php echo add_query_arg( array( 'orderby' => 'comment_count' , 'order' => 'DESC' ), $uri ); ?>">コメントの多い順</a></li> <li><a href="<?php echo add_query_arg( array( 'orderby' => 'comment_count' , 'order' => 'ASC' ), $uri ); ?>">コメントの少ない順</a></li> <li><a href="<?php echo add_query_arg( array( 'orderby' => 'post_date' , 'order' => 'DESC' ), $uri ); ?>">日付の新しい順</a></li> <li><a href="<?php echo add_query_arg( array( 'orderby' => 'post_date' , 'order' => 'ASC' ), $uri ); ?>">日付の古い順</a></li> </ul> ドロップダウン形式<br> <select name="original-sort-dropdown" onchange='document.location.href=this.options[this.selectedIndex].value;'> <option value="">ソート順を選択</option> <option value='<?php echo add_query_arg( array( 'orderby' => 'comment_count' , 'order' => 'DESC' ), $uri ); ?>'>コメントの多い順</option> <option value='<?php echo add_query_arg( array( 'orderby' => 'post_date' , 'order' => 'ASC' ), $uri ); ?>'>コメントの少ない順</option> <option value='<?php echo add_query_arg( array( 'orderby' => 'comment_count' , 'order' => 'DESC' ), $uri ); ?>'>日付の新しい順</option> <option value='<?php echo add_query_arg( array( 'orderby' => 'post_date' , 'order' => 'ASC' ), $uri ); ?>'>日付の古い順</option> </select>
wp 3.5 にて動作確認しました。
パーマリンクをデフォルトと投稿名の両方で確認しました。ただ、固定ページ詳細と投稿詳細では、トップページでのソート表示となります。
(固定ページ詳細と投稿詳細では、記事がそもそもひとつしか存在しない為、処理は何も行わせていません。)フォーラム: 使い方全般
返信が含まれるトピック: カスタム投稿タイプの一覧ページの並び順お書きになったコードを、ある程度変えますが
<?php
$args = array( ‘post_type’ => ‘staff’, ‘order’ => ‘asc’ );
$post_staff = get_posts( $args );if( empty( $post_staff ) ) {
?>
<p><?php _e(‘no post’); ?></p>
<?php
} else {
$count = 0;
foreach ( $post_staff as $post ) {setup_postdata($post);
$class = ”;
if( $count == 0 ) {
$class = ‘left0’;
} elseif( $count == 1 ) {
$class = ‘right0’;
} else {
$class = ”;
}?>
<div class=”staff_list <?php echo $class; ?>”>
<?php echo wp_get_attachment_image(post_custom(‘イメージ画像’),’laboratoryImage’); ?>
<div>
<h4><?php the_title(); ?></h4>
<p class=”data_link”><?php echo post_custom(‘タイトル’); ?></p>
<p><?php echo post_custom(‘説明’); ?></p></div>
</div>
<?php
$count++;
}
wp_reset_postdata();
}?>
これでどうでしょうか。
フォーラム: 使い方全般
返信が含まれるトピック: カスタム投稿タイプの一覧ページの並び順<?php
$args = array(/* 配列に複数の引数を追加 */
‘post_type’ => ‘staff’, /* 投稿タイプを指定 */
‘order=DESC’
);
?>ではなくて、
<?php
$args = array(
‘post_type’ => ‘staff’,
‘order’ => ‘asc’, /* ソート順 */
);
?>ではありませんか?