Pimp My Site
フォーラムへの返信
-
フォーラム: 使い方全般
返信が含まれるトピック: 投稿者と一部のユーザーのみ閲覧できる状態にしたい以下をテーマの functions.php にコピペでいいんじゃないかしら
add_action( 'pre_get_posts', function( $query ) { if ( is_admin() || ! $query->is_main_query() ) return; if ( current_user_can( '相談者権限' ) ) { // 「相談者権限」は実際の値に変更 $query->set( 'author', get_current_user_id() ); } } );
フォーラム: 使い方全般
返信が含まれるトピック: submenu表示時に親メニューの名前を追加、表示するにはテーマの functions.php に以下をコピペでいけるんじゃないかしら
add_filter( 'wp_nav_menu', function( $nav_menu, $args ) { return preg_replace( '@<a ([^>]+)>(.+)</a>\n+\t*<ul class="sub-menu">@m', '<a $1>$2</a><ul class="sub-menu"><li>'. '<h2>$2</h2>'. '</li>', $nav_menu ); }, 10, 2 );
フォーラム: 使い方全般
返信が含まれるトピック: リンク先にGETパラメタを引き継ぎたい別アプローチ:html の下の方に Javascript を書くだけ。
!function($){ $('a').on('click', function(){ var q = document.location.search.substring(1) , h = $(this).attr('href') , g = -1 === h.indexOf('?') ? '?' : '&'; if(-1 !== q.indexOf('cms=')){ h = [h, q].join(g); } document.location.href = h; return false; }); }(window.jQuery);
フォーラム: 使い方全般
返信が含まれるトピック: TOPページに投稿記事に入るカスタムフィールドの値を計算してTOP10を表示カスタムフィールドに画像のURLが入っているなら
post_custom( 'カスタムフィールド名' ) get_post_meta( get_the_ID(), 'カスタムフィールド名', true ) $post->カスタムフィールド名
などを echo esc_url() します。
カスタムフィールドに画像のIDが入っているなら
上記の値を echo wp_get_attachment_image() します。カスタムフィールドに入っている画像(写真)を一緒に出したい
このトピックとは別の話題になるので、わからない場合はトピックを新しく追加すると良いです。
フォーラム: 使い方全般
返信が含まれるトピック: カスタム投稿タイプのリスト一覧でカレントをつけたいこうですね。
<div id="side"> <ul id="submenu"> <?php $current_page_id = $wp_query->get_queried_object_id(); $args = array( 'post_type' => 'staff', 'posts_per_page' => -1, ); $your_posts = get_posts($args); foreach ( $your_posts as $post ) { setup_postdata($post); $current_class = get_the_ID() == $current_page_id ? ' current_page_item' : ''; ?> <li class="page_item<?php echo $current_class; ?>"><?php echo post_custom('name'); ?></li> <?php } wp_reset_postdata(); ?> </ul> </div>
フォーラム: 使い方全般
返信が含まれるトピック: jQueryの.appendメソッドを使って本文($content)内の任意のタグに追記したい。以下のように functions.php に書けば、コメントを
#test
の後に挿入できます。add_filter('the_content', 'test_append'); function test_append( $content ) { ob_start(); echo $content; ?> <script type="text/javascript">!function($){ $('<div class="myclass"><ul><?php if ( $comments = get_approved_comments( get_the_ID() ) ) : ?> <?php foreach( $comments as $comment ): ?><li><?php $text = str_replace( array( "\r\n", "\r", "\n" ), '', nl2br( get_comment_text( $comment ) ) ); echo wp_kses_post( str_replace( '\'', '\\\'', $text ) ); ?></li><?php endforeach; endif; ?></ul></div>').appendTo('#test') }(window.jQuery) </script> <?php return ob_get_clean(); }
コードの意味は、PHPのリファレンスやCodexなどで調べてください。
フォーラム: 使い方全般
返信が含まれるトピック: TOPページに投稿記事に入るカスタムフィールドの値を計算してTOP10を表示functions.php に以下のコードを追加します。
add_filter( 'posts_fields', 'my_posts_fields', 10, 2 ); function my_posts_fields( $fields, $query ) { if ( ! empty( $query->query_vars['ave'] ) ) { global $wpdb; $fields .= ",( {$wpdb->postmeta}.meta_value + mt1.meta_value + mt2.meta_value ) AS point"; } return $fields; } add_filter( 'posts_orderby', 'my_posts_orderby', 10, 2 ); function my_posts_orderby( $orderby, $query ) { if ( ! empty( $query->query_vars['ave'] ) ) { global $wpdb; $orderby = 'point DESC'; } return $orderby; }
TOP10を出力するところで以下のように書きます。
$top10 = get_posts( array( 'ave' => true, 'suppress_filters' => false, 'posts_per_page' => 10, 'meta_query' => array( array( 'key' => 'aaa', // 効果のメタキー 'value' => 0, 'type' => 'NUMERIC', 'compare' => '>' ), array( 'key' => 'bbb', // すっきり感のメタキー 'value' => 0, 'type' => 'NUMERIC', 'compare' => '>=' ), array( 'key' => 'ccc', // 落ちやすさのメタキー 'value' => 0, 'type' => 'NUMERIC', 'compare' => '>=' ), ), ) ); foreach( $top10 as $post ) : setup_postdata( $post ); echo '<p>' . get_the_title() . ' (' . sprintf( '%.1f', $post->point / 3 ) . ')</p>'; endforeach; wp_reset_postdata();
フォーラム: 使い方全般
返信が含まれるトピック: 管理画面の投稿一覧で編集等のリンクが表示されない[編集 | クイック編集 | ゴミ箱 | 表示]が表示される
これらは
$columns['title']
のカラムに表示されます。
unset()
すると、当然表示されなくなります。タイトル欄に記事タイトル以外の内容を表示させるなら以下のようにします。
add_action( 'load-edit.php', 'my_edit' ); function my_edit() { if ( 'news' == $GLOBALS['typenow'] ) // カスタム投稿タイプが news の場合 add_filter( 'the_title', 'my_title', 9, 2 ); } function my_title( $title, $id ){ return get_post_meta( $id, 'news_title', true); }
フォーラム: 使い方全般
返信が含まれるトピック: jQueryの.appendメソッドを使って本文($content)内の任意のタグに追記したい。the_content()
で、add_filter()
されたtest_append()
が実行されるので、あえてapply_filters()
しなくても良いです。filter は値を返すのがお約束なので
echo
せずに全部return
すると良いです。function test_append( $content ) { return $content . '<script type="text/javascript">' . '//<![CDATA[' . '$(function(){$( . '"<div class=\'myclass\'>テスト追記</div>").appendTo("div#test");' . '});' . '//]]>' . '</script>'; }
追記分のdivへclassやidをつける
上のコードではクラス名を括るクォーテーションが文字列中(の文字列中)に出てくるのでエスケープしています。
以上を気をつければ大丈夫だと思います。