CSSが得意な渋谷のウェブデザイナーのウェブ開発メモ

[PR] Another American Dictionary Spanglish with us!

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

特定のカテゴリに属する記事を分岐させる

single.phpなどでIDが5のカテゴリに属する記事のときだけという条件分岐


<?php 
if(in_category( 5 )){
//ここにその条件
}
?>
スポンサーサイト

カスタムフィールドに入れたものを表示

クォーテーションの中にフィールドの名前をいれる。


<?php 
$price = post_custom('price');
?>

WordPress: 単純にカテゴリIDを指定してカテゴリ名を取得する

<?php 
$cateterm = get_term_by('id', ここにカテゴリID, 'category');
echo $cateterm->name;
?>


参照 [関数リファレンス/get term by]

投稿ページ single.php でカテゴリIDを収得

<?php 
$id = get_the_id(); 
$terms = get_the_terms( $id, 'category' ); // print_r( $terms ); 
foreach($terms as $term) { 
echo $term->cat_ID;
 ?>
参照 [How to get category id in single.php wordpress?]

tag.php で 現在のタグIDを取得

<?php $current_tag_id = $wp_query->query_vars['tag_id']; ?>

参照 [I need to GET the ID of a Tag, so I can use it]

category.php で 現在のカテゴリIDを取得

<?php $cur_cat_id = get_cat_id( single_cat_title("",false) ); ?>
参照[Get category id for category.php page]

Advanced Custom Fields カテゴリ/タグに追加したフィールドを投稿に表示させる

プラグインAdvanced Custom Fieldsの設定

位置:show this field group if 'Taxonomy Term'

カテゴリを選んだ場合

<?php
$terms = get_the_terms( get_the_ID(), 'category');
if( !empty($terms) ) {
	$term = array_pop($terms);
	$custom_field = get_field('フィールド名', $term );
	echo $custom_field;
}
?>

タグを選んだ場合

<?php
$terms = get_the_terms( get_the_ID(), 'post_tag');
if( !empty($terms) ) {
	$term = array_pop($terms);
	$custom_field = get_field('フィールド名', $term );
	echo $custom_field;
}
?>

参照:[Finding the term related to the current post]

固定ページでwp-paginateの挙動が変な時

やりたいこと

カスタムテンプレートをつかって固定ページ一覧を表示する固定ページをつくる。そのページにページングナビプラグインwp-paginateを使う。

起きる問題

現在位置のページリンクの数字を囲うタグが a のままで span にならない

そういう時は

ループの出だしに以下のコード

<?php query_posts('paged='.$paged); ?>

参照[【WP】固定ページ内で、ページングを実現する]

php ユーザーエージェントでPC/スマホを振り分ける

phpでの振り分け:iPhone, iPod, Android 対応

<?php
$ua=$_SERVER['HTTP_USER_AGENT'];
if(preg_match("/iPhone|iPod|Android/", $ua)) {//SP

}else{//PC

}
?>

Wordpressで画像タグ内のwidthとheightを自動的に入らないようにする

functions.php に以下のコードを追加

add_filter( 'post_thumbnail_html', 'remove_width_attribute', 10 );
add_filter( 'image_send_to_editor', 'remove_width_attribute', 10 );

function remove_width_attribute( $html ) {
   $html = preg_replace( '/(width|height)="\d*"\s/', "", $html );
   return $html;
}
参照:[WordPressで画像挿入時にwidthとheightを削除する方法]

category_description()でHTMLタグを使用可能にする

functions.php に以下のコードを追加


remove_filter( 'pre_term_description', 'wp_filter_kses' );

参照[[WordPress] category_description()でタグを使用可能にする]

Wordpress 管理画面のURL変更

functions.php に以下のコードを追加

function redirect_login(){
  $uri = getenv('REQUEST_URI');
  if(!strpos($uri, 'hackmebaby')){
    if( !is_user_logged_in() ){
      wp_redirect( 'https://www.google.com/search?q=how+to+hack+wordpress', 301 );
    }
  }
}
add_action( 'login_form_login', 'redirect_login' );

有効な管理画面URL

http://example.com/wp-admin/?hackmebaby

従来のURLを入力すると外部のサイトへ飛ばす設定。

参照:[管理画面の隠蔽]

Tag リスト:記事件数を表示

サイドバーで タグ名(14) こんな感じに表示

<?php
$taxonomy = 'post_tag';
$terms = get_terms( $taxonomy, '' );
if ($terms) {
	foreach($terms as $term) {
		if ($term->count > 0) {
		echo '<a href="' . esc_attr(get_term_link($term, $taxonomy)) . '">' . $term->name.' (' . $term->count . ')</a>';
		}
	}
}
?>
参照:[how to display post count of all wordpress tags]

is_home() が効かない時は

サイドバーとかでis_home()が効かないって時は直前にこのコードを入れる


<?php wp_reset_query(); ?>

参照:[WordPress] トップページなのにif(is_home())が効かないと思いきや

Wordpress:固定ページの親IDを取得

やり方①

pageにでるファイルに直接書けば $thePostID の中に親IDが入る。

<?php
global $post;
global $wp_query;
if ($post->post_parent != 0){
    $thePostID = $post->post_parent;
}else{
    $thePostID = $wp_query->post->ID;
}
?>

参照:Parent page ID

やり方②

親がいる場合の条件で取得するやり方。$post->post_parent の中身が親ID。

<?php
function is_subpage() {
    global $post;
    if ( is_page() && $post->post_parent ) {
        return $post->post_parent;
    } else {
        return false;
    }
}
?>

参照:Get parent page ID if exists

やり方③

functions.php の中に下のコードを付け足せば

<?php
function get_top_parent_page_id() {
    global $post;
    $ancestors = $post->ancestors;
    if ($ancestors) {// 固定ページが子であるかどうかをチェック
        return end($ancestors); //一番上の階層の親のIDを取得
    } else { // 固定ページが親である場合は自分のそのID
        return $post->ID;
    }
}
?>

このコードで実際の固定ページファイル内で取得できる。

<?php
echo get_top_parent_page_id($post->ID);
?>

参照:How To Get Top Parent Page ID In WordPress

Wordpress:「続きを読む →」リンクをSEO最適化

「続きを読む →」リンクのリンクを記事のタイトルにしましょう。

<?php the_content( __( '<a href="'. get_permalink($post->ID) . '">'. get_the_title().'' ) ); ?>

参照:Displaying a "more…" link when using the the_excerpt()

Wordpress: 親カテゴリーのIDを取得

<?php
if( is_category() ) {
$q_cat = get_query_var('cat'); //現在のカテゴリID
$cat = get_category( $q_cat );
echo $cat->category_parent; // これが親カテゴリID
}
?>


現在の親カテゴリIDの取得方法

参考:Get ID of parent category

Wordpress:現在のカテゴリーのIDを取得

<?php get_query_var( cat ); ?>

ページ のIDの場合は page、タグのIDの場合は tagWP Query

参考[How to Get Category ID of Current Category]

.htaccess を置いてもパーマリンク設定ができないで404

パーマリンク設定後に404エラーが出る。.htaccess もちゃんと置いてたのに。そんな時は vhost.conf を確認

<VirtualHost *:80>
DocumentRoot /var/www/html/sub.example.com
ServerName sub.example.com
<Directory “/var/www/html/sub.example.com”>
AllowOverride All
</Directory>
</VirtualHost>

ピンクを追加してアパッチ再起動

参照:[VPSに入れたWordPressで、パーマリンク変更後に404になる件]

参照:[パーマリンクの使い方]

wordpress 投稿 p タグを削除

投稿部分の読み込んでるファイル内の the_content(); の上にこの一行追加で

<?php remove_filter ('the_content', 'wpautop'); ?>

Wordpress コメントのURLとメールアドレス項目を削除

wordpress のデフォルコメント「ウェブサイト(URL)」項目を削除

add_filter('comment_form_default_fields', 'mytheme_remove_url');
function mytheme_remove_url($arg) {
    $arg['url'] = '';
    return $arg;
}

「メールアドレス」項目を削除

add_filter('comment_form_default_fields', 'mytheme_remove_email');
function mytheme_remove_email($arg) {
    $arg['email'] = '';
    return $arg;
}

追記:2014/9//8

上記のコードで削除できない場合functions.php に以下のコードを追加

add_filter("comment_form_defaults","my_special_comment_after");
 
function my_special_comment_after($args){
    $args['comment_notes_after'] = '';
    $args['fields']['email'] = '';
    $args['fields']['url'] = '';
    return $args;
}
参照:[WordPressのコメント欄から「メールアドレス」「ウェブサイト」の項目を削除]

Wordpress コメント項目を追加する

wordpressの投稿に対するコメントのデフォルト項目は名前、メールアドレス、URL、コメント。そこに(例)男女選択項目を追加します。テーマフォルダの中のfunctions.phpにどんんどんコピペ。まずは入力項目欄。

add_filter( 'comment_form_defaults','change_comment_form_sex');
function change_comment_form_sex($default) {
	$commenter = wp_get_current_commenter();	
		$default['fields']['email'] .= '<p class="comment-form-author">' .
		'<label for="sex">'. __('性別') . ''</label>
		<select id="sex" class="sex" name="sex">
			<option value="">性別
			<option value="男性">男性
			<option value="女性">女性
		</select>
		</p>';
	return $default;
}

次に男女選択項目欄を入力必須にするためのコード

add_filter( 'preprocess_comment', 'verify_comment_meta_data_sex' );
function verify_comment_meta_data_sex($commentdata) {
  if ( ! isset( $_POST['sex'] ) )
        wp_die( __('Error: please fill the required field (sex).') );
		return $commentdata;
}

次にここで入力(選択)された情報をコメント情報と一緒にデータベースに登録するためのコード。データはテーブル「wp_postmeta」に入ります。

add_action( 'comment_post', 'save_comment_meta_data_sex' );
function save_comment_meta_data_sex( $comment_id ) {
	$sexies = explode(',', $_POST['sex']);
	foreach ($sexies as $sex)
		echo update_comment_meta( $comment_id, 'sex', $sex, true);
}

で最後に表示するためのコード

add_filter( 'get_comment_author_link', 'attach_sex_to_author' );
function attach_sex_to_author( $author ) {
  $sexies = get_comment_meta( get_comment_ID(), 'sex', false );
  if ( $sexies ) {
		foreach ($sexies as $sex)
		  $author .= $sex . ' ';
	}
	return $author;
}

追加する項目が複数ある時はピンクやオレンジの名前を変えてね。

参照:[Adding Input Fields To Comment Form]

WordPressパーミッション設定

テーマ編集

管理画面からテーマファイルを編集するにはthemeのphp,css,html...ファイルを666に。

http://ja.forums.wordpress.org/topic/185

メディア

管理画面から画像をアップするにはwp-content下に「uploads」フォルダを作成しフォルダを707に。

http://ja.forums.wordpress.org/topic/321

WordPressテーマハック(基本編)

Loopの基本

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
	ここにループ内容を入れる
<?php endwhile; else: ?>
	ここは投稿がない時の表示
<?php endif; ?>
http://codex.wordpress.org/The_Loop

特定のカテゴリー投稿を非表示にする

<?php query_posts($query_string . '&cat=-3,-8'); ?>
これをloopの上に置く
http://codex.wordpress.org/The_Loop

メイン以外の場所(sidebar.php)にもループを置く

<?php if (have_posts()) : ?>
	<?php while (have_posts()) : the_post(); ?>    
		ここにループ内容を入れる
	<?php endwhile; ?>
<?php endif; ?>
*single.phpなどの表示に注意
http://codex.wordpress.org/The_Loop

投稿表示数を制限する

<?php query_posts('posts_per_page=5'); php>
これをloopの上に置く
http://codex.wordpress.org/Function_Reference/query_posts

条件

<?php if (!is_single()) {?>
	これではさむとsingle.php以外では表示される
<?php }?>
http://codex.wordpress.org/Conditional_Tags

sidebar2,フッターにウィジェットを追加する

管理画面ウィジェット追加するsidebarを追加する方法 sidebar2 http://www.quickonlinetips.com/archives/2007/11/how-to-create-multiple-dynamic-sidebars-for-wordpress-widgets/

WordPress: カテゴリリスト/ページリストからtitle属性を削除

デフォルトでほおって置くとリンクに title="" がリンクにはいってしまいちょっといやな解決法。 <?php wp_list_categories(); ?> を以下のコード(カテゴリーリスト)に 取り替えます。
<?php
$fuck_attr = wp_list_categories('echo=0');
$fuck_attr = preg_replace('/title=\"(.*?)\"/','',$fuck_attr);
echo $fuck_attr;
?>
それではあなたの今のコードを見てみましょう。
現状
<?php 
wp_list_categories('show_count=1&title_li&orderby=ID&order=DESC&depth=1'); 
?>
使用例:echo=0のあとにパラメータを追加します。
<?php 
$fuck_attr = wp_list_categories('echo=0&show_count=1&title_li&orderby=ID&order=DESC&depth=1');  
$fuck_attr = preg_replace('/title=\"(.*?)\"/','',$fuck_attr);  
echo $fuck_attr;  
?>
これでカーソルをあわせても「~に含まれる投稿をすべてを表示」なんていう表示が出なくなります。

参考サイト

[Remove the Title Attribute from WordPress Category and Page Lists]
[Removing The Title Attribute From wp_list_categories & wp_list_pages]
[Removing The Title Attribute From wp_list_categories & wp_list_pages]

解決策2

Remove Title Attributes というプラグインもあります。

Wordpress: ページテンプレートが消えて選べないバグ

wordpress をアップグレードするとたまに起きるバグ。
ページ編集画面に自分の制作したテンプレートがプルダウンで選べるはずなのに表示されない。解決法は簡単。

1.管理画面 -> 外観-テーマ
「現在のテーマ」に何も選ばれてなければ利用可能なテーマの「使用する」を選択
(すでに自分のテーマが選ばれていればいったんデフォルトを選択
デフォルトをカスタマイズしてる場合はclassicなどほかのテーマを選択。その後また自作テーマに戻す)

2. 管理画面のページ編集にもどるとテンプレートを選択する項目が表示されるようになります。

参考URL:
[Fix the Wordpress Missing Page Template Bug]
[Forums: Created Page Templates Missing]

追記:1/22/2010

どのバージョンで起きるバグかわかりませんが手動でアップグレードするときにWordPressのアップグレード/詳細書かれていませんが、default 以外にテーマを使っている場合はファイルを削除する前にテーマをデフォルトにしておくといい。

参考URL:
[6 tips for upgrading WordPress]

サーバー側の強制改行はファイル作成・保存時に注意

不要なタグや改行がはいるサーバーがたまにあります。ファイルの保存方法を変えて回避

文字コード

utf-8
utf-8 mobなし

フォーマット(サーバーのOS)

windows
unix

notepad++での変更

ツールバー > フォーマット

wordpress [この投稿の続きを読む »] の表示変更

ファイルの場所
wp-content/themes/default/index.php

変更箇所
<?php the_content(__('Read the rest of this entry »', 'kubrick')); ?>

Read the rest of this entryを変更

wordpress ver. 2.7.1

関連参考リンク
http://www.msng.info/archives/2009/01/wordpress_without_more.php
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。