Wordpress功能无法在自定义主题中使用

时间:2016-08-08 20:07:04

标签: php wordpress

所以我是Wordpress的新手。我昨天在MAMP上设置了一个Wordpress本地服务器,我正在尝试建立自己的主题。麻烦的是,每当我尝试the loop时,我都没有得到任何内容。如果我只使用php,我的代码是有效的,但问题是自定义Wordpress函数不可用(即have_posts()

其他一些帖子建议要求wp-blog-header,但这也没有用。这是我的代码:

<?php

define('WP_USE_THEMES', false);
require('../../../wp-blog-header.php');

if(have_posts()) :
    echo 'testing'

else : 
    echo 'testing'
endif;


?>

我的屏幕上当前没有显示任何内容。

wp-blog-header.php位于此处:wordpress -> wp-blog-header.php

我的自定义主题位于此处:wordpress -> wp-content -> themes -> firstTheme -> index.php

所有提示都表示赞赏。

3 个答案:

答案 0 :(得分:1)

好吧,你正在编写PHP,而你的代码包含

if(have_posts()) :
    echo 'testing'
else : 
    echo 'testing'
endif;

我不确定这在PHP中如何有效。我希望

if(have_posts())
    echo 'testing';
else
    echo 'testing';

另请参阅PHP中的ifelse语法。

答案 1 :(得分:0)

您需要使用正确的WordPress函数来构建自己的自定义主题。 例如,您应该将文件放在主题的根目录中,而不是require,然后是x-path deep(从WP-Core角度来看也不需要)。 喜欢:

`get_template_part('name-of-file-to-include-without-php-ending');`

原因是,WordPress Codex建议使用子主题函数。

get_template_part('');函数会进行一些检查,例如如果已经安装了儿童主题等。

问题:为什么要定义那个常量?

所有常量都应驻留在wp-config(根文件夹)中。

此外,值得一提的是,你没有在帖子中循环。在撰写本文时,您的代码只会查看有帖子,然后什么也不做。您还需要添加while功能,以便处理您的帖子并显示它们。

所以,做(在你的loop.php或主题中想要显示它们的地方):

<?php if(have_posts() ) : ?>
    // The while added
    <?php while ( have_posts() ) : the_post(); ?>

        // Your template tags here: e.g. the_author();
        <h2><?php the_author(); ?></h2>
        <h3>the_title();</h3>
        etc...
    <?php endwhile?>
<?php endif; ?>

最后一件事:WordPress有一些约定,哪些文件应该驻留在主题文件夹中。例如,每个主题都应该有一个functions.php,您可以在其中放置菜单和小部件等内容。

构建主题的最受欢迎的标签是:

get_header();

当然,您需要在主题中添加header.php个文件。同样,WordPress会查找要包含的这些文件,不允许其他命名。

get_footer();

猜猜,对 - 它会在你的主题文件夹中找到footer.php

有关详细信息,请参阅WordPress Codex&gt;模板零件等.. https://codex.wordpress.org/Theme_Development#Template_Files

我强烈建议您将WordPress核心功能用于模板,忽略它们并执行“经典”PHP,例如include / require会引导你走向黑暗但不会成功。

一个好的插件,看你正在使用的模板部分是“文件内容”。获取默认主题,安装该插件并在管理栏中查看它所说的内容,以了解WordPress正在做什么。

这是我的循环的摘录,在我的主题中使用bootstrap。

<?php if(have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php if(is_front_page() || is_page() || is_single() ) : ?>
        <div class="row row-content">
            <div class="content col-xs-12 col-sm-12 col-md-12 col-lg-12">
                <?php the_content(); ?>
            </div>
        </div>
    <?php // category.php, archive.php, search.php ?>
    <?php elseif(is_category() || is_archive() || is_search() ) : ?>
        <div class="row row-excerpt">
            <div class="thumbnail-box col-lg-4">
            <a href="<?php the_permalink(); ?>" class="preview-image-link">

                <?php
                    // Thumbnail und Post Auszug
                    if(has_post_thumbnail() ) {
                        the_post_thumbnail('thumbnail');
                    }
                ?>
                </a>
            </div>
            <div class="text-details-box col-lg-8">
                <div class="row row-excerpt-text">
                    <div class="excerpt col-lg-12">
                        <?php the_excerpt(); ?>
                    </div>
                </div>
                <div class="row row-tags row-read-more">
                    <div class="tags col-lg-8">
                        <?php the_tags('<ul class="tag-list">

                    </div>
                    <div class="read-more-boxcol-md-4 col-lg-4">
                        <a href="<?php the_permalink(); ?>" class="read-more-btn">
                            <span class="read-more-btn-text">></span> 
                        </a>
                    </div>
                </div>
            </div>
        </div>
        <?php endwhile; ?>
<?php endif; ?>

答案 2 :(得分:0)

我在构建一些wordpress网站时也发现了这个问题。安装PhP插件(插入PhP)后,我的问题就解决了。

安装完成后,更改为[insert_php]和[/ insert_php],我的代码工作正常。