将动态内容插入页面

时间:2015-04-18 作者:Warren Vick

我看到这个问题经常出现,但还没有看到我的具体要求的答案。

我试图使用WordPress页面作为模板,并根据作为URL参数传递的ID(以及数据库索引)插入数据库源内容(大约20个左右的文本字段,包括图像文件名)。e、 g.www.example。com/examplepage/?pid=123

在WordPress之前,我可以在PHP中轻松完成这项工作,方法是执行一些代码来获取数据库记录,然后写出散布在这些字段中的HTML。

我在WordPress中有一个插件,允许我在页面上执行一些PHP代码片段,但这在页面正文中,我相信标题已经写好了。标题中有title和meta desc等字段,我希望用动态内容填充这些字段。

我见过CMS的插件,如房地产列表管理、电影等。但我的数据库处理是一种非常罕见的方法,因此我必须采用自定义构建方法。

我理解我可能需要在函数中做一些工作。为了深入了解WordPress的页面呈现,我为我的主题编写了php脚本,但我想小心不要干扰我网站上的一般页面/帖子。这只是一个特殊的页面,它将接受一个参数并加载适当的内容。

如果您能就我需要采取的步骤提供一些建议,我将不胜感激。

3 个回复
最合适的回答,由SO网友:cybmeta 整理而成

在构建页面模板时,可以在该模板的内容中插入任何需要的内容,并使用任何想要的PHP代码段。因此,您可以像在PHP中一样继续执行它。例如,这可能是您的页面模板:

<?php
/*
Template Name: My template
*/
get_header();

?>
<main>

    <?php

    if( isset( $_GET[\'pid\'] ) ) {

        // Populate your dynamic content here

    }

    ?>


</main>
<?php get_footer(); ?>
但您对文档的标题和元标记的看法是正确的,它们可能已经设置好了。这是你需要的wp_title 过滤器和wp_head 操作,使用is_page_template 函数检查您是否在页面模板中。

例如,假设您的页面临时文件名如下page-mytemplate.php 它位于您主题的根源:

add_filter( \'wp_title\', function( $title, $sep ) {

    if( is_page_template( \'page-mytemplate.php\' ) ) {

        // Modify the $title here
        $title = \'my new title\';

    }

    return $title;

}, 10, 2 );

add_action( \'wp_head\', function() {

    if( is_page_template( \'page-mytemplate.php\' ) ) {

        // Echo/print your meta tags here
        echo \'<meta name=....>\';

    }

} );

The problem

这是一个大问题<meta> 标签。WordPress没有标准的管理方式<meta> 文档的标签。如果您使用任何添加<meta> 标签,除非插件提供了一种方法,否则您将无法覆盖它们。

Reference

SO网友:GastroGeek

我可能遗漏了什么,但:

如果您只需要“pid”作为示例,并且它是URL的一部分,那么它相当简单?

在页面模板“examplepage”中,只需执行以下操作:

$mypid = $_GET[\'pid\'];
然后基于该值执行SQL查询并返回响应。

如果你想要一些更基于ajax的东西,那么当用户登陆\'examplepage\'时,使用\'pid\'并将其作为类或数据属性添加到一个空div中。比如说:\'results container\'

<?php $mypid = $_GET[\'pid\']; ?>
<div class"results-container" mypid="<?php echo $mypid; ?>"></div>
然后在文档上执行一个js脚本,该脚本读取该div上的mypid属性并执行单独的获取。这样,页面可以在加载结果时加载并显示“正在获取”状态和一些初步内容。

希望这是有意义的。

-用胖手指在手机上打字!AAAAA小时。

SO网友:Debbie Kurth

最近我自己也做过。这可能会迟到,但如果其他人想知道怎么做,这是我在wordpress环境中的步骤

创建一个读取URL参数的函数,例如:

function details_Page($atts)
  {
  global $wpdb; 


 // Get the database record for this details
 $DatabaseId = $_GET[\'pid\'];
 if(!is_numeric ($DatabaseId))
   {
   // GO TO MISSING PAGE. PAGE IS NOT VALID. 
   header(\'Location: /missing-page/\');  
  return;
  }

 GENERATE YOUR PAGE CODE HERE
}
现在为该函数创建一个快捷码,或在页面模板中使用它。从功能上讲,这是制作页面模板的另一种方法。

         add_shortcode(\'DETAILS_PAGE\', \'details_Page\');
现在,将短代码添加到专门定义的页面(或模板)中。

要更改标头以匹配您的数据,请确保add\\u操作调用位于主循环或函数中。php。否则,您将有一个比赛条件。

 add_action( \'wp_head\', \'MMD_listings_add_custom_meta\', 10 );
 function add_custom_meta()
    {
   $slug = basename(get_permalink());  // I use for the particular page
   if(  $slug == \'details\')
      {
     $Name = $_GET[ \'Name\' ];
     $Desc = $_GET[ \'Desc\' ];
     $Logo = $_GET[ \'Logo\' ];
    ?>   
    <meta content="<?php echo $Name; ?>>"/>
    <meta content="<?php echo $Desc; ?>">
   <?PHP
   }
 }

结束

相关推荐

WordPress API函数在AJAX函数上不起作用。php调用

我试图使用AJAX在WordPress中显示类别的子类别:当我选择一个主类别时,会调用WP AJAX,结果用于显示子类别。到目前为止,我有一个客户端代码,在不调用WP函数时可以运行(此代码位于主题页中):jQuery(\'#cat-location-main\').change(function () { var optionSelected = jQuery(this).find(\'option:selected\'); var valueSelected = opti