如何在Wordpress二十四个

时间:2016-10-17 14:27:45

标签: wordpress wordpress-theming

我有Wordpress二十四的儿童主题,我希望在主要博客区域上方的网格中显示特色帖子,而不是在博客区域中消失。所以它应该出现在网格和博客循环中。

我已经搜索了主题的文件,但我没有得到线索,过滤了特色帖子。

我还试图摆脱不必要的复杂性,并为子主题创建了一个新的index.php:

    <?php
        if ( have_posts() ) :
            // Start the Loop.
            while ( have_posts() ) : the_post();

                the_title( '<h1 class="entry-title">', '</h1>' );

            endwhile;

        else :
            // If no content, include the "No posts found" template.
            get_template_part( 'content', 'none' );

        endif;
    ?>

但即使有特色帖也不见了。 (它只显示主循环)。

知道在哪里做这个伎俩?

提前致谢!

更新24.10。: 在我用最近的两个答案解决了我的问题之后,我进一步调查了最初的二十四个主题并找到了文件 inc / featured-content.php ,其中特色内容被过滤。< / p>

ll中的函数pre_get_posts。 231 ff。负责此问题 - 故意,但没有提示,如何过滤。

我假设,因为 inc / featured-content.php 包含一个类,我可以扩展它 覆盖pre_get_posts-method?

但实际上,我不是php-guru而且我没有看到原始类初始化的地方......?有什么想法吗?

后续更新: 在functions.php中,ll。 514 ff。,该课程是必需的:

/*
 * Add Featured Content functionality.
 *
 * To overwrite in a plugin, define your own Featured_Content class on or
 * before the 'setup_theme' hook.
 */
if ( ! class_exists( 'Featured_Content' ) && 'plugins.php' !== $GLOBALS['pagenow'] ) {
    require get_template_directory() . '/inc/featured-content.php';
}

这似乎是一个简单地覆盖它的问题?这样做会好,不是要放弃整个班级的功能,而只是改变它......

3 个答案:

答案 0 :(得分:0)

试试这种方式..

<?php

    $fp_arg = array(
                    'posts_per_page' => 3,
                    'post_type' => 'post',
                    'meta_key' => 'featured_product', // the name of the custom field
                    'meta_compare' => '=', // the comparison (e.g. equals, does not equal, etc...)
                    'meta_value' => 1, // the value to which the custom field is compared. In my case, 'featured_product' was a true/false checkbox. If you had a custom field called 'color' and wanted to show only those blue items, then the meta_value would be 'blue'
                    );

    $future_post = new wp_query($fp_arg);

 ?>

<?php if ( $future_post->have_posts() ){
         while ( $future_post->have_posts() ) : $future_post->the_post();
                 the_title( '<h1 class="entry-title">', '</h1>' );
                 if ( has_post_thumbnail() ) {
                    the_post_thumbnail();
                 }

        endwhile;
}
 ?>

<?php wp_reset_query(); ?> 

答案 1 :(得分:0)

/ * posts_per_page'=&gt; -1所有帖子 get_the_post_thumbnail根据您的帖子ID获取您的图片 * /

$posts = get_posts( array( 'posts_per_page' => -1 ) );
    foreach ( $posts as $_post ) {
        if ( has_post_thumbnail( $_post->ID ) ) {
            echo '<a href="' . get_permalink( $_post->ID ) . '" title="' . esc_attr( $_post->post_title ) . '">';
            echo get_the_post_thumbnail( $_post->ID, 'thumbnail' );
            echo '</a>';
        }
    }

答案 2 :(得分:0)

最后,我找到了一个有效的解决方案(实际上,在我尝试之前,但使用了错误的钩子......: - /):

在我孩子的functions.php我添加了这些行,以便从Featured_Content

中的inc/featured-content.php班级中删除过滤功能
function do_not_filter_featured_posts() {
 remove_action( 'pre_get_posts', array( 'Featured_Content', 'pre_get_posts' ) );
}
add_action( 'wp_loaded', 'do_not_filter_featured_posts' );

这会在加载wordpress后添加一个要调用的函数do_not_filter_featured_posts,这将删除挂钩pre_get_posts上父主题的类Featured_Content中添加的函数pre_get_posts

瞧!