所以我跑進我的Artisteer的主題沒有任何後元數據(發佈日期,類別等)的這個問題。我在藝術家設計程序中禁用了他們,因爲我不希望整個頁面看起來像博客,而是一個專業頁面。
但是,後來我意識到我確實想要我的新聞版塊(這實際上只是一個博客頁面)的發佈日期,發佈類別等數據。
我該如何恢復?
原來,這比你想象的要難...在WP和artisteer的早期版本中,你可以找到處理輸出的文件,比如索引,頁面等等,但現在它全部結束了函數互相呼叫=)
它是這樣的: WP中的每個頁面都有一個模板文件(可以在創建頁面時指定),在WP Codex中閱讀更多關於頁面模板的內容。 您的博客頁面運行的是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元素的實際代碼?我可以在哪裏開始「黑客」我的主題?正如你可能看到的,上面的'before'的行包含項目的'data',category'和一個額外的樣式設置值'header'。因此,讓我們看看我們的主題的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>";
}
所以該功能只提取了一些數據,並把它封裝在一些主題造型,但我仍然沒有找到,我可以註釋掉包含「posted by」等信息的實際html元素。 請記住我已經失去了日期戳記,所以我認爲它已被註釋掉了。
最後看的地方現在是函數theme_post_wrapper(),如果你退後一步,你會看到theme_post_wrapper()函數依次調用上面提取數據並封裝它的函數在一些造型元素。你會認爲這個函數會在functions.php中的某個地方?但是,沒有......對於功能theme_post_wrapper目錄搜索(表明,它是在主題文件庫/ 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不會僅關閉某個選項或將這些元素的打印代碼註釋掉, t生成t帽子代碼。所以我不得不手動把它放回去。足夠公平 - 我猜artisteer的主題不會被黑客攻擊並以這種方式進行調整,但我仍然喜歡他們比那些二十世紀和二十世紀主題的邏輯更好= p