艺术家wp-主题元数据(日期,类别)丢失

时间:2012-04-09 16:53:40

标签: php wordpress

我对wordpress和艺术家感到疯狂。我正在尝试一些过去非常简单的事情 - 在我的博客页面上打开和关闭我的帖子的日期和帖子类别的显示。

我在content.php

中找到了这个
global $post;
theme_post_wrapper(
    array(
        'id' => theme_get_post_id(), 
        'class' => theme_get_post_class(),
        'title' => theme_get_meta_option($post->ID, 'theme_show_page_title') ? get_the_title() : '', 
        'heading' => theme_get_option('theme_single_article_title_tag'), 
        'before' => theme_get_metadata_icons('date', 'header'),
        'content' => theme_get_content()
    )
);

指令说你所要做的就是插入或删除' date'在'之前'线。我已经使用我的内容文件来回完成,输出没有任何变化。

我无法找到打印全部的实际代码,wordpress曾经如此简单,然后才挖出10级深度,你现在必须通过数以百万计的不同函数来查找最简单的东西。

正如你可能会说的那样,我通常不会使用WP =)但现在我已经在我的桌子上了,而且我已经和WP保持了几年的合作...... < / p>

关于我在哪里可以找到变量的任何输入都值得赞赏...

我原本预计会在某个时候找到

&#39;发布在&#39; .echo($ date)。&#39;在类别&#39; .echo($ category)

或至少远程相似的东西......

2 个答案:

答案 0 :(得分:2)

啊哈!弄清楚了! before函数需要在h2标记之后:

<div class="post-inner article">
    <?php echo $thumbnail;
      if (!art_is_empty_html($title)){
          echo '<h2 class="postheader">'.$title.'</h2>';
      }
      echo $before;
    ?>
<div class="postcontent">
<!-- article-content -->

离开这里以防其他人来寻找它! : - )

答案 1 :(得分:0)

所以我遇到了在我的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元素的实际代码在哪里?我在哪里可以开始'黑客'我的主题?正如您所看到的,上面'之前'的行包含项目的数据,类别'和样式的附加值'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>";
    }

因此该函数只提取一些数据,并将其包装在一些主题样式中,但我仍然没有找到我可以注释掉包含“发布者”等信息的实际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的工作方式如下:当您选择不在主题中包含日期或作者元数据时,艺术家不仅会关闭选项或注释掉打印这些选项的代码元素,它实际上根本不生成该代码。所以我不得不手动把它放回去。足够公平 - 我想艺术家的主题不是以这种方式被黑客攻击和调整,我仍然喜欢他们比那些二十和二十二主题的逻辑更好... p