カテゴリー
WordPress

【WordPress】functions.php覚書(随時更新)

随時更新予定。

<?php
// NEWマーク表示
function new_arrival(){
  if( get_the_time( 'Ymd' ) + 7 > date( 'Ymd' ) ) {
           echo '<span class="pk">new</span>';
	}
}
// NEWマーク表示(最終更新日から起算)
function new_arrival(){
  if( get_the_modified_date( 'Ymd' ) + 7 > date( 'Ymd' ) ) {
           echo '<span class="pk">new</span>';
	}
}
// アイキャッチ画像を有効にする
add_theme_support( 'post-thumbnails' );
register_post_type(
'manual',
array(
// 'supports'に'stuff'を追記
'stuff' => array('title','editor','thumbnail')
)
);

// 新しいサイズのアイキャッチ画像を追加にする。
if ( function_exists( 'add_image_size' ) ) { 
	add_image_size( 'fav-thumb', 98, 61, true ); //(切り抜かれた大きさ)
}
//  ログイン画面の背景色設定 // 
function my_custom_login() { ?>
    <style type="text/css">
      body.login {
      background-color: #007ab8;//色番号入力
    }
    </style>
<?php }
add_action( 'login_enqueue_scripts', 'my_custom_login' );

カテゴリー
WordPress

【WordPress】FTP接続無しで各種更新を行う

WorsPressでは、コアの更新やプラグインの更新の際、サーバの設定によってはFTP接続を求められることがあります。下記の記述を行うことで、FTP接続を求められることもなく、管理画面から更新を行うことが可能になります。忘れるのでメモ。

wp-config.phpに、下記を/** Absolute path to the WordPress directory. */より上に記述。

define('FS_METHOD', 'direct');

参考:WordPress FTPなしでプラグインダウンロードできる設定
http://qiita.com/mzdakr/items/41d64e5d79557b8de6ef

カテゴリー
WordPress

【WordPress】自動更新に失敗

夕方で疲れていたこともあって、とあるサイトでWordPressの4.7.1の自動更新ボタンを「まあ、大丈夫だろう」という軽い気分でクリックしてしまった。押した瞬間、後悔した。バックアップを取っておらず、バージョンアップがうまくいかなかった時のことを考えていなかったのである。そして神様はやはり非情だった。いつもはメールで「WordPressを自動更新しました!」とお気楽に教えてくれるのに、この時ばかりは「裁きじゃ」といわんばかりに「必要なファイルをコピーしています」の表示でフリーズしたのである。顔面蒼白。

URLをたたくとメンテナンス中の文字が表示。管理画面も同じく。ただちに検索して、メンテナンスモードを解除。再度URLをたたくと無情にもエラー表示。泣き顔で管理画面のURLをたたくと「データベースの更新が必要です」の表示。お祈りしながらクリック。データベースは更新され、無事サイトも復旧しました。

備忘録として、フリーズ発生から解決までの手順。

1)自動更新クリック、「必要なファイルをコピーしています」の表示のまま応答なし
2)URLをたたくと、「現在メンテナンス中~」の表示。管理画面にログインしようとしても同じメッセージ
3)SFTPでサーバの接続。.maintenanceファイルを削除
4)管理画面のURLからデータデースを更新
5)サイト復旧(WordPressの更新も完了)

教訓として、
・自動更新でコケることは、ある(検索すると結構ヒットする)。
・必ずバックアップを取って、復旧できる状態にしておく。
・疲れている時は、疲れている自分を自覚する。

以後、反面教師として、礎として、記念碑として、この投稿をアップしておくこととす。

カテゴリー
WordPress

【WordPress】記事投稿のエディタでhtmlを表示させたい時

特殊文字を使う

&lt;pre&gt;

結果
<pre>

カテゴリー
WordPress

【WordPress】抜粋文の特殊文字の削除

現場から抜粋分に特殊文字が表示されてしまうとの連絡がありました。
get_the_excerpt()関数で表示される文字列は、改行などの特殊文字も表示されてしまうようで、しかも文字数に含まれるため、「&nbs」や「&nb」で切れて表示されてしまうケースも。Functions.phpに下記を書いて対応しました。

//本文抜粋を取得する関数
function get_the_custom_excerpt($content, $length) {
  $search = array('&nbsp;','&nbs','&nb','&n');//置き換える特殊文字列群
  $content =  str_replace($search,"",$content);//特殊文字削除
  return $content;
}
add_filter('get_the_excerpt', 'get_the_custom_excerpt');

参考:寝ログ様
http://nelog.jp/get_the_custom_excerpt

カテゴリー
WordPress

【WordPress】最後の文字列を取得して、処理を分岐

ある拡張子だけ別処理をしたかったので使用しました。忘れないうちに写経します。

<?php $files = get_field('xxx');
if(mb_substr("$xxx", -4) == 'xlsx'):?>
  「<?php the_title(); ?>」をダウンロードしています。<br>ダウンロードがはじまらない場合は<a href="<?php the_field('xxx') ?>">こちらをクリック</a>して下さい。
  <?php endif; ?>

追記:
拡張子を取得する関数がありました。
http://php.net/manual/ja/splfileinfo.getextension.php
SplFileInfo::getExtension — ファイルの拡張子を取得する

カテゴリー
WordPress

【WordPress】ループサンプル / ループの入れ子

タクソノミータームごとに、記事一覧を作りたいなどのサンプル

タクソノミーターム名
 記事
 記事
 記事
タクソノミーターム名
 記事
 記事
 記事
タクソノミーターム名
 記事
 記事
 記事

のようになる。

    <?php
    $count = 1;
$args = array(
    'orderby'       => 'name', 
    'order'         => 'ASC',
    'hide_empty'    => false, 
); 
$terms = get_terms( 'doc', $args );
foreach ( $terms as $term ) :
$term_link = get_term_link( $term, 'タクソノミー名' );//リンク取得
echo '<div>' .$term->name. '</div>' .esc_url( $term_link ). '('  .$term->count;
?>
<?php $count++;?>
<?php
    $args = array (
        'post_type'   => 'post_type名',
        'タクソノミー名'     => $term->slug,
        'numberposts' => -1,
        'orderby' =>'meta_value',
        'order' => 'ASC',
    );
    $myposts = get_posts($args);

    foreach ($myposts as $post) :
        setup_postdata($post);
?>

<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>

<?php
endforeach;endforeach;
wp_reset_postdata();
?>

カテゴリー
WordPress

【WordPress】7日以内の記事に新着マーク表示

 <?php
              // 7日以内の記事に新着マーク表示
              if( get_the_time( 'Ymd' ) + 7 > date( 'Ymd' ) ) {
            ?>
            <div class="new">NEW</div>
            <?php
              }
            ?>

カテゴリー
WordPress

【WordPress】毎度分からなくなるタクソノミーターム一覧(リンク付)

何度も書いてるけど、毎度分からなくなるので…。
index.phpやside.phpに設置するなら以下。
リンク付、カウント付。※201611/10修正

<?php
$args = array(
    'orderby'       => 'name', 
    'order'         => 'ASC',
    'hide_empty'    => false, 
); 
$terms = get_terms( 'タクソノミー名', $args );
foreach ( $terms as $term ) {
$term_link = get_term_link( $term, 'タクソノミー名' );//リンク取得
echo '<div>' .$term->name. '</div>' .esc_url( $term_link ). '('  .$term->count;
}
?>

引数などの詳細はCodexを。
http://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_terms
関数リファレンス/get terms

カテゴリー
WordPress

【WordPress】posttypeのラベル名を取得したい

下記をループ内へ設置。

<?php $p_type = get_post_type( $post );//所属するposttype名を取得
$obj = get_post_type_object( $p_type );//$p_typeのposttype情報を取得
$p_name =  $obj->labels->singular_name;?>//posttypeのラベル名を取得

で、$p_nameをechoで出力すればOKでした。