将页面内容插入到另一个变量已更改的页面中

时间:2020-02-27 作者:Kristýna Šulcová

我正在尝试使用此简单代码将第(1)页内容插入另一页(2):

 <?php
$id = 216;
$p = get_page($id);
echo apply_filters(\'the_content\', $p->post_content);
?>
到目前为止还不错。不过,插入的页面(1)是一些html代码,其中一度包含

value="<?php echo $url?>"
是否有任何方法可以在上面的代码(即第(2)页)中编辑该变量的值?

非常感谢。

2 个回复
SO网友:majick

假设您想用一些静态值来替换它(好吧,无论如何您都可以更改它),像这样的查找和替换代码段可以做到:

$content = apply_filters( \'the_content\', $post->post_content);
// set the replacement string value
$replace = "REPLACEMENT";
// make sure the quotes used are exact
$find_start = "<param name=\'filter\' " . \'value="\';
$find_end = \'"\';
// find the (end of) search string start position
$pos = strpos( $content, $find_start) + strlen( $find_start );
// get the content before (end of) search string
$before = substr( $content, 0, $pos );
// get content after search string
$after = substr( $content, $pos, strlen( $content ) );
// strip the after-content before end quote
$pos2 = strpos( $after, $find_end );
$after = substr( $after, $pos2, strlen( $after) );
// recombine content with replacement value
$content = $before . $replace . $after );
return $content;

SO网友:Tom J Nowell

您的代码中存在一个根本问题,这表明您在代码中做了一些非常危险的事情。

给定此代码:

$id = 216;
$p = get_page($id);
echo apply_filters(\'the_content\', $p->post_content);
我希望这是从模板文件运行的,但问题是帖子内容包含以下内容:

value="<?php echo $url?>"
这在普通的WordPress中是不可能的,所以您必须使用一个插件,该插件允许您在帖子内容中放置PHP标记。这是你所有问题的根源。因此:

大多数WordPress知识对您来说都是不可用的,因为绝大多数教程都假设您位于模板文件中,所以无法正常工作,大量解决方案根本无法正常工作,使用插件将PHP嵌入到帖子中是极不寻常的,了解这一点非常重要。一个不知道这一点的人会提出一些行不通的建议。

在这种情况下,如果使用允许您在帖子内容中使用PHP的插件,则无法找到您想要的答案。

此外,从安全角度来看,这是非常危险的。But there is a much easier way that uses standard WordPress practices

因此,我认为,只要您坚持使用允许您在帖子中嵌入PHP的插件,就不可能解决您的问题。永远不要使用允许在数据库中存储PHP代码并从数据库中运行它的东西。

短代码

如果需要在帖子/页面中嵌入PHP逻辑,请创建一个短代码。

这样,您的页面可以是这样的:

我的页面!

[kristynas\\u form foo=“bar”]

在插件或主题中functions.php 您可以使用以下内容:

add_shortcode( \'kristynas_form\', function( array $attributes )  {
    $foo = $attributes[\'bar\'];
    return \'form HTML\';
});
当页面被呈现时,短代码被替换掉。这就是您应该如何实现iframe、forms和其他内联显示的复杂逻辑。