いつも忘れてるのでメモ
1.管理画面で設定変更 ([設定] > [一般設定] )
(この時点で管理画面が表示できなくなるけど落ち着く。)
2.ファイルの移動
WordPressのファイル群を/wp/以下などに一式移動します。
WordPressで投稿のデータにカスタムフィールドを加えて取得する。(全文)
<?php $posts_join_keys = array(); $posts_join_prefix = 'tmp_join_table_name_'; add_filter('posts_join', 'posts_more_join' ); add_filter('posts_fields','posts_more_fields'); function posts_more_join( $join ) { global $posts_join_keys,$posts_join_prefix; foreach($posts_join_keys as $key => $k){ $alias = $posts_join_prefix.$k; $join .= sprintf(" INNER JOIN wp_postmeta as %s ON ( wp_posts.ID = %s.post_id AND %s.meta_key = '%s' )",$alias,$alias,$alias,$k); } return $join; } function posts_more_fields($fields){ global $posts_join_keys,$posts_join_prefix; foreach($posts_join_keys as $key => $k){ $alias = $posts_join_prefix.$k; $fields .= sprintf(',%s.meta_value as %s',$alias,$k); } return $fields; } $posts_join_keys[] = 'locate'; $posts_join_keys[] = 'description'; $args = array( 'posts_per_page' => -1, 'fields'=> 'wp_posts.ID,wp_posts.post_title', 'meta_query' => array(array( 'key' => 'locate', 'value' => '', 'compare' => '!=' )) ); $query = new WP_Query( $args ); $posts = $query->get_posts(); wp_reset_postdata(); $json = '{data:'.json_encode($query->get_posts()).'}'; ?>
上のプログラムの $posts_join_keysに取得したいカスタムフィールドの’meta_key’を追加(push)していけばその分取得できます。
$posts_join_keys[] = 'locate'; $posts_join_keys[] = 'description';
プラグインなどをつかわずにできるシンプルなページネーション(ページ番号)のリンクのテンプレートです。
<div class="pagenation">
<ul>
<?php
$page_current_num = (!empty($paged))? $paged:1;
$page_last_num = $wp_query->max_num_pages;
if($page_current_num > 1){
echo sprintf('<li class="prev"><a href="%s">%s</a></li>',get_pagenum_link($page_current_num-1),'PREV');
}
$page_start_num = $page_current_num - NUM_PAGENATION_BEFORE_AFTER;
if($page_start_num < 1) $page_start_num = 1;
$page_end_num = $page_current_num + NUM_PAGENATION_BEFORE_AFTER;
if($page_end_num > $page_last_num) $page_end_num = $page_last_num;
for($i = $page_start_num;$i<=$page_end_num;$i++){
if($page_current_num==$i){
echo sprintf('<li class="active">%s</li>',$i);
}else{
echo sprintf('<li><a href="%s">%s</a></li>',get_pagenum_link($i),$i);
}
}
if($page_current_num < $page_last_num){
echo sprintf('<li class="next"><a href="%s">%s</a></li>',get_pagenum_link($page_current_num+1),'NEXT');
}
?>
</ul>
</div>
//---------------------------------------------------pagination
.pagenation
padding: 40px 0
margin: auto
display: table
&:after
clear: both
content: "."
display: block
height: 0
visibility: hidden
ul
&:after
clear: both
content: "."
display: block
height: 0
visibility: hidden
text-align: center
margin: auto
li
float: left
list-style: none outside none
margin-left: 3px
&:first-child
margin-left: 0
&.active
background: #336699
color: #FFF
cursor: not-allowed
padding: 10px 20px
a
background: #F2F2F2
color: #336699
display: block
padding: 10px 20px
text-decoration: none
&:hover
background-color: #A1AABA
color: #FFF
opacity: 0.8
transition-duration: 500ms
transition-property: all
transition-timing-function: ease
function get_sub_fields_excerpt_more($key,$limit=30){ $str = get_field($key); $len = mb_strlen($str,ENCODING); if($len > NUM_EXCERPT_SLIDER){ return mb_substr($str,0,NUM_EXCERPT_SLIDER,ENCODING).'...'; }else{ return $str; } }
NUM_EXCERPT_SLIDER,ENCODINGは、文字数,文字コードの定数
WordPressで特定のカスタムフィールドが入力されている記事をランダムに取得する方法です。WP_Query関数を利用