テンプレートにタグを入れたい
-
初めまして。初心的な質問をお許しください。
カスタムフィールドでループ以外の場所、heder等のテンプレート内にタグを挿入することは可能でしょうか?
一画像だけ又はひとつのタイトルを使う事だけでテンプレートを切り替えることも多いと思いますが、いまWPMLという翻訳のプラグインを利用していて、英語版で画像を切替に悩んでいます。
WPMLでは日本語のテンプレートを共通で使うために、CSSで画像(英語)を選ばせようとして、それをカスタムフィールドでタグを挿入出来ないかと悩んでいます。カスタムテンプレートで出来ればと思っておりますが、他の方法があれば教えていただけますか?
よろしくお願いします。
-
自己報告ですが、
テンプレートに下記を記入してみましたが、真っ白になってしまって動かないのですが、
なにか間違っていますか? 固定ページでpost 81がそのページだったのですが。<?php if( is_post(’81’) ): ?>
<h2 id=”en_top”><?php bloginfo(‘description’); ?></h2>
<?php elseif(): ?>
<h2 id=”main_top”><?php bloginfo(‘description’); ?></h2>
<?php endif; ?>elseif()をではなくて、elseじゃないですかね。php-webさん
どうもありがとうございます。
書き方が悪かったようで下記のように書いたら解決できました。<?php if(is_page(’81’)): ?>
<h2 id=”en_top”><?php bloginfo(‘description’); ?></h2>
<?php elseif( is_page()): ?>
<h2 id=”main_top”><?php bloginfo(‘description’); ?></h2>
<?php endif; ?>PHPの意味合いがわからないためご迷惑かけました。
ちょうどWPMLを使ってサイト構築をしていたので、参考までに・・・。
いまWPMLという翻訳のプラグインを利用していて、英語版で画像を切替に悩んでいます。
とのことなので、WPMLで表示しているページの言語コードを取得し、それによってCSSの切り替えなどに利用する方法です。
使っているテーマの functions.php に以下のコードを追加します。if (function_exists('icl_get_languages')) { if(!is_admin()) { $languages = icl_get_languages('skip_missing=1'); if(!empty($languages)){ foreach($languages as $l){ if($l['active']) $lang_class = $l['language_code']; } } } } else { $lang_class ="ja"; }これで変数
$lang_classに現在表示しているページの言語コードが入ります(日本語=ja、英語=enなど。)プラグインが有効化されていない時は$lang_class ="ja"です。
後は日本語、英語で表現(cssや画像など)場所で変数を参照してあげればOKです。
becky_moniさんのコードを参考にすると<?php global $lang_class; // header.php で利用する場合はglobal宣言が必要 if ($lang_class=='ja') { // 日本語の時 $h2_ID="main_top"; } else { // 日本語以外の時 $h2_ID="en_top"; } ?> <h2 id="<?php echo $h2_ID; ?>"><?php bloginfo('description'); ?></h2>※素人考えのコードなので検証はしていますが、不具合が出るかも知れません。
あくまで参考程度にとどめておいてください。gatespaceさん
ありがとうございます。
他のページもどうしようか悩んでいました。
カテゴリーを”en”を作って該当したらとか。。
言語コードからならすべてに対応ができますね?
なるほどです。PHP初心者ですが、イメージはつかみかけてきました。
動くかどうかトライしてみます。
‥ あ、言語はjpになってました。<反省!ついでで申し訳ないのですが、サイドバーにリンクを表示してますが、
自動に英語になりません。アーカイブ・カテゴリー・メタについては自動変換できましたが。
これはやる方法があるのでしょうか?
それと固定ページ(投稿は表示済)に限ってですが、管理画面に翻訳を編集するの鉛筆マークとプラスマークが出ないのですが、これは他のプラグインとのコンフリクトと考えても良いのでしょうか? WP3.1にしたからなのかな?
WPMLの質問でお許しください。言語コードからならすべてに対応ができますね?
出来ます。言語が増えても(フランス語や韓国語など)大丈夫です。(私は6カ国語で運用しています)
ついでで申し訳ないのですが、サイドバーにリンクを表示してますが、自動に英語になりません。
上記のイメージがつきません。外部リンク、という考え方でしょうか?
私のやり方ですが、テーマのサイドバーでウィジェットが使えるなら、- 外観>メニュー で適当な名前を付けた外部リンク集を作る(例:外部リンク)
- WPMLが有効なら1.で作ったメニューに対応する言語のメニューを作る(例:外部リンク(英語))
- 外観>ウィジェット でカスタムメニューを追加する。カスタムメニューの「メニューを選択」のプルダウンから1.で作ったメニュー名を選択して保存。
他にもやり方はあると思いますが。これで希望通りになるでしょうか?
それと固定ページ(投稿は表示済)に限ってですが、管理画面に翻訳を編集するの鉛筆マークとプラスマークが出ないのですが、これは他のプラグインとのコンフリクトと考えても良いのでしょうか? WP3.1にしたからなのかな?
当方は(クライアントの関係上) WordPress 3.0.5、WPML 2.0.4.1 で運用していますが、
上記の問題が再現できません。(他に有効化しているプラグインはWP Multibyte Patchのみです)
コンクリフトと推測されるならば、他のプラグインを一度停止して、一つずつ有効化するなど、問題の切り分けを行ってみてください。
それでも解決されないようならWPMLのユーザーフォーラムをチェックしてみてください。
http://forum.wpml.org/6ヶ国語もですか!すごいです。日本のPCでできるのですか?
自分のPCはiMacだけど‥ できるのかも。
質問内容がWPMLになってしまって申し訳ないです。ウィジットはテーマのサイドバーでご指示いただいた通りで出来ました。
ただ、外観から深いところで記入しないとならないので、
どこか固定ページにリンクのページを作成してそこから記入できるとうれしいのですけど。
贅沢は言いませんが、できるのであれば。。WPMLは初めて使ったもので、基本的なことが分かってません。
なんで、言語コードがenにならないのでしょうか?
下記の書き方だとダメなのでしょうか?<html lang="ja"> <meta charset="UTF-8"> <meta name="author" content=" " lang="ja" xml:lang="ja" /> ↓ <html <?php language_attributes(); ?>> <meta charset="UTF-8">あとプラグインのコンクリフトの件ですが全プラグインを外しても解決しませんでした。
WordPress3.1+WPML 2.0.4.1 自分の設定が間違っているのか、それともPHP5.16を使ってるので無理があるのか不明です。また、ユーザーフォーラムは英語なので‥。。(泣でもかなり解決してますので、本当に感謝しております。
続いて質問してすみません。
タクソノミーにて投稿と同じようにしておりますが、
こちらもWPMLで翻訳ボタンをつけることは可能でしょうか?ただ、外観から深いところで記入しないとならないので、
どこか固定ページにリンクのページを作成してそこから記入できるとうれしいのですけど。
贅沢は言いませんが、できるのであれば。。それであれば固定ページを作成してその翻訳ページを作ればいいだけなのでは?
なんで、言語コードがenにならないのでしょうか?
下記の書き方だとダメなのでしょうか?デフォルトテーマTwenty Ten 1.1で確認しましたが、
<html <?php language_attributes(); ?>>
をとなっていれば、日本語ページでは<html dir="ltr" lang="ja">英語ページでは<html dir="ltr" lang="en-US">となります。一度テーマをTwenty Ten 1.1にしてみて、これまでおきていた問題(管理画面を含む)がでるかどうか確認した方が良いと思います。
(問題がなければお使いのテーマに問題があります)
ちなみにWPML 2.0.4.1ですが、プラグインページでWordPress3.1では「Broken」との報告があります。
http://wordpress.org/extend/plugins/sitepress-multilingual-cms/
上記のデフォルトテーマで確認しても問題が再現されれば、WordPressそのもののバージョンダウン、あるいはWPML以外のプラグインを利用することを検討してください。タクソノミーにて投稿と同じようにしておりますが、
これの意味がわかりません。カスタム投稿タイプのことでしょうか?
あと、英語を敬遠されていますが、WPMLに限らずWordPressも含め日本語の情報が少ないときは、翻訳ツールを使うなどして英語の情報を探す努力をしてください。
特に日本人以外の方が作成されているプラグインの場合は英語でサポートされている場合がほとんどです。gatespaceさん いろいろありがとうございました。
なんとか理解できてきています。
テーマについては自分で試行錯誤で作成したものなので、少しづつみなおしていきます。
おっしゃるとおりTwenty Tenにて確認してみれば早いことだったのですが、
WPMLで作ったものなので、テーマを変えてしまうと元に戻らないかもという恐れがありました。
WPMLはCompatible up to: 3.0.5とありました。ダウングレードした方が早いのだろうな。タクソノミーですが、カスタム投稿タイプでnews用に作りました。
function.phpに書いたものは下記です。
これも翻訳ページができてないので、書き方の問題なのかバージョンの問題なのか?
悩んでおります。/*
カスタム投稿タイプの追加
*/
add_action( ‘init’, ‘create_post_type’ );
function create_post_type() {
register_post_type( ‘news’, /* post-type */
array(
‘labels’ => array(
‘name’ => __( ‘NEWS’ ),
‘singular_name’ => __( ‘NEWS’ )
),
‘public’ => true,
‘menu_position’ =>5,
/* アイキャッチ画像やカスタムフィールドなど表示*/
‘supports’ => array(‘title’,’editor’,’thumbnail’,’custom-fields’,’excerpt’,’author’,’trackbacks’,
‘comments’,’revisions’,’page-attributes’)
/* ここまで */
)
);
/* ここから */
register_taxonomy(
‘news-cat’, /* タクソノミーの名前 */
‘news’, /* news投稿で設定する */
array(
‘hierarchical’ => true, /* 親子関係が必要なければ false */
‘update_count_callback’ => ‘_update_post_term_count’,
‘label’ => ‘NEWSカテゴリー’,
‘singular_label’ => ‘NEWSカテゴリー’,
‘public’ => true,
‘show_ui’ => true
)
);
/* ここまでを追加 */
}
トピック「テンプレートにタグを入れたい」には新たに返信することはできません。