如果插入到其他页面中,页面模板是否不显示简单的HTML?

时间:2011-09-03 作者:Justine

我创建了一个超级简单的联系人页面模板,只有内容和联系人表单,如下所示:

<?php
/*
Template Name: Contact
*/
?>

<?php while (have_posts()) : the_post(); ?>

    <div id="blockcontact">
        <?php the_content(); ?>
        <form id="contactform" method="post" action="<?php bloginfo(\'template_directory\'); ?>/_assets/submitemail.php">
            <input name="user"  type="text" value="Name" />
            <input name="email" type="text" value="E-Mail"/>
            <input name="url" type="text" value="Website" />
            <input name="subject" type="text" value="Subject" />
            <textarea rows="10" name="message" cols="50" id="message">Your message here...</textarea>
            <input type="submit" class="button" value="SEND" id="send" />
            <div id="error"></div>
        </form>
    </div><!-- blockcontact -->

<?php endwhile; ?>
然后,我需要使用自定义查询将此页面插入另一个页面(例如主页)。我认为,查询是不相关的,但它基本上是获取所有创建的页面并显示其内容:

<?php 
    $temp_query = $wp_query;
    $args = array(\'post_type\' => \'page\', \'orderby\' => \'menu_order\', \'order\' => \'ASC\', \'post_status\' => \'publish\', \'posts_per_page\' => 5,);
    $wp_query = new WP_Query($args);
?>

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

    <div class="block group" id="<?php echo $post->post_name; ?>">

        <?php the_content(); ?>

    </div><!-- /<?php echo $post->post_name; ?> -->

<?php endwhile; ?>
<?php endif; ?>

<?php $wp_query = $temp_query; ?>
对于普通页面(那些没有自定义模板的页面)来说,它似乎工作得很好,但是对于这个联系人页面,我从查询中得到的是内容(the_content()) 但不是形式。

我还有另一个自定义页面模板,我正试图将其拉入主页,它也在做同样的事情。

知道是什么导致了这个问题吗?从未见过这样的事情,我已经在WordPress工作多年了。。。

提前感谢!

编辑:我现在看到我的问题-the_content() 在我的查询工作正常-它提取页面中输入的内容。我试图实现的是获取页面的全部内容,包括我的自定义HTML,就像include() PHP中的函数。我很想知道怎么做。

3 个回复
SO网友:Jeremy Jared

无法使用如下自定义表单:

STEP ONE:

打开文本编辑器并粘贴表单内容-

<?php
// Custom Contact Form
?>
<div id="my-ccf">
<form id="contactform" method="post" action="<?php bloginfo(\'template_directory\'); ?>/_assets/submitemail.php">
    <input name="user"  type="text" value="Name" />
    <input name="email" type="text" value="E-Mail"/>
    <input name="url" type="text" value="Website" />
    <input name="subject" type="text" value="Subject" />
    <textarea rows="10" name="message" cols="50" id="message">Your message here...</textarea>
    <input type="submit" class="button" value="SEND" id="send" />
    <div id="error"></div>
</form>
</div>
STEP 2:将文件另存为我的联系人表单。php(将my-contact-form.php上传到主题根目录)

STEP 3:如果要显示联系人表单,请将其放置在模板文件中:

<?php get_template_part(\'my-contact-form.php\'); ?>

SO网友:MathSmath

如果您需要表单作为内容的一部分(而不是页面模板的一部分),请尝试使用短代码生成表单。(请参见Shotcodes API documentation 在法典中)。这样,您就可以在内容中包含一个快捷码(即,它将从常规的post查询中返回),并且不需要创建一组用于一次性页面的自定义模板。

例如,可以将以下内容放入函数文件(或插件)中:

<?php
function wpsx_27632_my_shortcode_handler() {
?>
    <div id="my-ccf">
    <form id="contactform" method="post" action="<?php bloginfo(\'template_directory\'); ?>/_assets/submitemail.php">
        <input name="user"  type="text" value="Name" />
        <input name="email" type="text" value="E-Mail"/>
        <input name="url" type="text" value="Website" />
        <input name="subject" type="text" value="Subject" />
        <textarea rows="10" name="message" cols="50" id="message">Your message here...</textarea>
        <input type="submit" class="button" value="SEND" id="send" />
        <div id="error"></div>
    </form>
    </div>
<?php
}
add_shortcode(\'my_contact_form\', \'wpsx_27632_my_shortcode_handler\'):
?>
然后,在所见即所得中,您只需在希望联系人表单出现的位置添加“[我的联系人表单]”。

SO网友:Chip Bennett

您需要创建一个合适的自定义页面模板。

自定义页面模板旨在定义呈现指定了模板的静态页面所需的所有标记。示例代码构成一个模板部分文件,而不是完整的模板文件。

(法典参考号:Pages >> (Custom) Page Templates)

创建一个自定义页面模板,首先要做的事情是:您需要通过将代码全部打包来更正代码get_header()get_footer() 调用并摆脱循环,因为这里似乎不需要它。(仅当要显示时才需要循环the_content() 对于指定自定义模板的静态页面,或者如果要输出自定义查询循环。)

例如:

<?php get_header(); ?>

<div id="blockcontact">
    <?php the_content(); ?>
    <form id="contactform" method="post" action="<?php bloginfo(\'template_directory\'); ?>/_assets/submitemail.php">
        <input name="user"  type="text" value="Name" />
        <input name="email" type="text" value="E-Mail"/>
        <input name="url" type="text" value="Website" />
        <input name="subject" type="text" value="Subject" />
        <textarea rows="10" name="message" cols="50" id="message">Your message here...</textarea>
        <input type="submit" class="button" value="SEND" id="send" />
        <div id="error"></div>
    </form>
</div><!-- blockcontact -->

<?php get_footer(); ?>
PROTIP:您希望此模板文件看起来像page.php, 除非将循环替换为联系人表单标记。

使用自定义页面模板创建新的静态页面;给它一个标题,下面没有内容Page Attributes, 通过“模板”下拉列表,将“联系人”模板分配给页面,发布页面,查看页面,享受您的联系方式

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post