そのため、Artisteerテーマに投稿メタデータ(公開日、カテゴリなど)がないというこの問題に遭遇しました。ページ全体をブログのように見せたくはなく、プロのページのように見せたいので、artisteerデザインプログラムでそれらを無効にしました。
しかし、後で私は自分のニュースセクション(実際には単なるブログページ)に公開日、投稿カテゴリなどのデータが必要であることに気付きました。
どうすれば元に戻すことができますか?
それはあなたが思っているより少し難しいことがわかりました...以前のバージョンのWPとartisteerでは、出力、つまりインデックス、ページなどを処理するファイルを見つけることができましたが、今ではすべてが互いに呼び出す関数に包まれています=)
WPの各ページにはテンプレートファイル(ページの作成時に指定できます)があります。WPコーデックスのページテンプレートの詳細をご覧ください。あなたのブログページはhome.phpまたはarchive.phpから実行されます(投稿のアーカイブを表示しているか、通常の「ホーム」アイテムを表示しているかによって異なりますが、ブログは小さなニュースであるため、私は「ニュース」と呼んでいます。私のサイトのセクション)。
投稿を印刷するループは次のようになります。
/* Start the Loop */
while (have_posts()) {
the_post();
get_template_part('content', '');
}
したがって、ポスト出力に関してこのページテンプレートファイルで制御されるのは、使用するコンテンツフィルタテンプレートだけです。Artisteer 3.1テーマでは、多数のcontent.phpファイルがあり、上記の関数はcontent.phpを呼び出しますが、ページなどにcontent-page.phpを含めることができます。次に私のcontent.phpを見てみましょう。 ..。。
global $post;
theme_post_wrapper(
array(
'id' => theme_get_post_id(),
'class' => theme_get_post_class(),
'thumbnail' => theme_get_post_thumbnail(),
'title' => theme_get_meta_option($post->ID, 'theme_show_page_title') ? get_the_title() : '',
'heading' => theme_get_option('theme_'.(is_single()?'single':'posts').'_article_title_tag'),
'before' => theme_get_metadata_icons('date,category', 'header' ),
'content' => theme_get_excerpt(),
'after' => theme_get_metadata_icons( '', 'footer' )
)
);
したがって、このファイルが実際に行うことは、このテンプレートに含めるデータの部分を決定することだけです。ここをドリルダウンすると、イライラし始めました... HTML要素を出力する実際のコードはどこにありますか?テーマの「ハッキング」はどこから始められますか?ご覧のとおり、上記の「前」の行には、項目「データ、カテゴリ」、およびスタイリングの追加値「ヘッダー」が含まれています。それでは、テーマfunctions.phpでその関数を見てみましょう...
function theme_get_metadata_icons($icons = '', $class=''){
global $post;
if (!is_string($icons) || theme_strlen($icons) == 0) return;
$icons = explode(",", str_replace(' ', '', $icons));
if (!is_array($icons) || count($icons) == 0) return;
$result = array();
for($i = 0; $i < count($icons); $i++){
$icon = $icons[$i];
switch($icon){
case 'date':
$result[] = '<span class="art-postdateicon">' . sprintf( __('<span class="%1$s">Published</span> %2$s', THEME_NS),
'date',
sprintf( '<span class="entry-date" title="%1$s">%2$s</span>',
esc_attr( get_the_time() ),
get_the_date()
)
) . '</span>';
break;
case 'category':
$categories = get_the_category_list(', ');
if(theme_strlen($categories) == 0) break;
$result[] = '<span class="art-postcategoryicon">' . sprintf(__('<span class="%1$s">Posted in</span> %2$s', THEME_NS), 'categories', get_the_category_list(', ')) . '</span>';
break;
//other options such as author etc. are included here by default, I took them out for the sake of this example...
}
}
$result = implode(theme_get_option('theme_metadata_separator'), $result);
if (theme_is_empty_html($result)) return;
return "<div class=\"art-post{$class}icons art-metadata-icons\">{$result}</div>";
}
そのため、この関数は一部のデータのみを抽出し、それをいくつかのテーマスタイルでラップしますが、「投稿者」などの情報を含む実際のhtml要素をコメントアウトできる場所がまだ見つかりません。日付スタンプを紛失したことを思い出してください。どこかでコメントアウトされていると思いました。
最後に確認する場所は関数theme_post_wrapper()です。一歩下がると、theme_post_wrapper()が関数であり、データを抽出していくつかのスタイリング要素でラップした上記の関数を呼び出していることがわかります。 。この関数はfunctions.phpのどこかにあると思いますか?しかし、いいえ...関数theme_post_wrapper(のディレクトリ検索は、それがテーマファイルlibrary /wrappers.phpにあることを示しました。そしてそれは次のようになります:
function theme_post_wrapper($args = '') {
$args = wp_parse_args($args,
array(
'id' => '',
'class' => '',
'title' => '',
'heading' => 'h2',
'thumbnail' => '',
'before' => '',
'content' => '',
'after' => ''
)
);
/*
var_dump($args);
die;
*/
extract($args);
if (theme_is_empty_html($title) && theme_is_empty_html($content)) return;
if ($id) {
$id = ' id="' . $id . '"';
}
if ($class) {
$class = ' ' . $class;
}
?>
<div class="art-box art-post<?php echo $class; ?>"<?php echo $id; ?>>
<div class="art-box-body art-post-body">
<div class="art-post-inner art-article">
<?php
if (!theme_is_empty_html($title)){
echo '<'.$heading.' class="art-postheader">'$before.': '.$title.' <span class="published_date">('.$after.')</span></'.$heading.'>';
//original: echo '<'.$heading.' class="art-postheader">'.$title.'</'.$heading.'>';
}
echo $thumbnail;
?>
<div class="art-postcontent">
<!-- article-content -->
<?php echo $content; ?>
<!-- /article-content -->
</div>
<div class="cleared"></div>
<?php
?>
</div>
<div class="cleared"></div>
</div>
</div>
これが私のメタデータ要素が最終的に印刷される場所です。今では私はくつろいだ気分になり、すべてが再び世界に順調に進んでいます。もう一度Artisteerに感謝しますが、これは少し混乱していて、この問題に取り掛かるのにかなりの時間がかかりました。
私の問題の解決策に関する注意:Artisteerは次のように機能します:テーマに日付や作成者のメタデータを含めないことを選択した場合、artisteerはオプションをオフにしたり、これらの要素を印刷するためのコードをコメントアウトしたりするだけではありません。実際には、そのコードはまったく生成されません。だから私はそれを手動でそこに戻さなければなりませんでした。十分に公平です-アーティストのテーマはこのようにハッキングされたり微調整されたりするようには作られていなかったと思いますが、それでも私はそれらの21と21のテーマのロジックよりもずっと気に入っています= p