1

私はワードプレスとartisteerに夢中です。以前はかなり簡単だったものを試しています。ブログページの投稿の日付と投稿カテゴリの表示をオンまたはオフにします。

私はこれを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()
    )
);

そして、命令はあなたがしなければならないのは'前'行の'日付'を挿入または削除することだけだと言っています。私は自分のコンテンツファイルでそれを行ったり来たりしましたが、出力には何の変化もありません。

すべてを印刷する実際のコードを見つけることができません。WordPressは、すべてが10レベル深く掘り下げられる前は非常に単純でした。今では、何百万ものさまざまな関数を調べて、最も単純なものを見つける必要があります...

おそらくお分かりのように、私は通常WPを使用しません=)しかし、これは現在私のテーブルにあり、数年間WPの最新情報を入手していません...

変数を見つけることができる場所に関する入力はありがたいです...

私はある時点で見つけることを期待していました

'.echo($ date)'に投稿されました。カテゴリ内'.echo($ category)

または少なくともリモートで類似したもの...

4

2 に答える 2

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 -->

他の誰かがそれを探しに来る場合に備えて、これをここに残しておきます!:-)

于 2013-01-23T23:30:43.563 に答える
0

そのため、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

于 2012-04-16T05:25:30.457 に答える