WordPress 循环 (the_content)
Wordpress Loop (the_content)
我正在使用 wordpress 创建主题,但我对 php the_content(); 的工作原理有些困惑。
在下面的示例中,该函数检索单个 post 的所有内容。这被包装在 div 'entry-content' 中。这允许我设置内容的样式
<div class="entry-content">
<?php the_content(); ?>
</div><!-- .entry-content -->
但是,如果我在 the_content 中有多个 div 怎么办,例如,一些图像可能有一个 div id="image-small" 其他图像可能有一个 div "image-large"
这是否意味着我必须使用“text”选项卡将所有 HTML 标记复制并粘贴到 wordpress 后端。这样,包括 divs 在内的所有标记都将存储在数据库中,并使用 the_content() 函数检索并注入页面
这似乎是使模板起作用的一种非常糟糕的方法。
1) 您在数据库中存储了乱七八糟的标记
2) 用户可以通过(文本选项卡)编辑标记和拆分模板
是否有更好的解决方案,我是否误解了 WP 的工作原理?
人们是否通过后端将标记存储在 BD 中 (wordpress ui)
非常感谢
是的,您是正确的,您在数据库中存储了一些标记,理论上,用户可以破坏模板。然而,在实践中,您很少会看到这种情况。
但是,我们的想法是内容中应该只有很少的标记。您可能会看到与图像、table 或表单相关的样式,但除此之外很少见。
事实上,wordpress 通常与 WYSIWYG 编辑器一起使用,它会在您插入图像时添加一些标记,但通常不会破坏较大的模板。
是的,它将标记存储在数据库中。
您还可以将内容分成不同的自定义字段,并在模板中的任意位置显示这些字段。
因此,您用于布局的标记存储在模板中,而不是数据库中。
您可以为此创建自定义字段或元框。如果你不想写代码,有一个非常流行的插件:http://www.advancedcustomfields.com/
一般来说,您不应该将编辑器用于模板设计,而是用于内容。
对于模板设计,更改模板文件,例如,如果它是关于"post",那么为此更改"single.php"文件。
But what if I have a number of divs WITHIN the_content, for example
some images may have a div id="image-small" others may have a div
"image-large"
图像已经有 class 和您选择的图像尺寸,所以您不需要用 div 包裹它并给它一个尺寸 class,如果出于某种原因,您只想影响特定图像,因此您 class 每个图像都有图像 ID。
如果你需要,你可以安装 TinyMCE Advanced,它会给你一个选项来添加特定的 classes 到编辑器并使用它来设计编辑器内的特定部分,例如:如果您想在编辑器中为某些图像添加边框半径,您可以通过将此代码放入您的 "functions.php" 文件中来将 class border_radius 添加到编辑器:
add_filter( 'tiny_mce_before_init', 'tuts_mce_before_init' );
function tuts_mce_before_init( $settings ) {
$style_formats = array(
array(
'title' => __('Border Radius', 'your_theme'),
'selector' => 'p',
'classes' => 'border_radius',
)
);
$settings['style_formats'] = json_encode( $style_formats );
return $settings;
}
您将在 "format" 选项卡下的编辑器中看到 > "formats" class "border-radius",现在将其添加到您想要的图像/其他元素。
将 class 添加到带有您想要的设置的 CSS 样式文件中,您就完成了。
我正在使用 wordpress 创建主题,但我对 php the_content(); 的工作原理有些困惑。
在下面的示例中,该函数检索单个 post 的所有内容。这被包装在 div 'entry-content' 中。这允许我设置内容的样式
<div class="entry-content">
<?php the_content(); ?>
</div><!-- .entry-content -->
但是,如果我在 the_content 中有多个 div 怎么办,例如,一些图像可能有一个 div id="image-small" 其他图像可能有一个 div "image-large"
这是否意味着我必须使用“text”选项卡将所有 HTML 标记复制并粘贴到 wordpress 后端。这样,包括 divs 在内的所有标记都将存储在数据库中,并使用 the_content() 函数检索并注入页面
这似乎是使模板起作用的一种非常糟糕的方法。
1) 您在数据库中存储了乱七八糟的标记
2) 用户可以通过(文本选项卡)编辑标记和拆分模板
是否有更好的解决方案,我是否误解了 WP 的工作原理? 人们是否通过后端将标记存储在 BD 中 (wordpress ui)
非常感谢
是的,您是正确的,您在数据库中存储了一些标记,理论上,用户可以破坏模板。然而,在实践中,您很少会看到这种情况。
但是,我们的想法是内容中应该只有很少的标记。您可能会看到与图像、table 或表单相关的样式,但除此之外很少见。
事实上,wordpress 通常与 WYSIWYG 编辑器一起使用,它会在您插入图像时添加一些标记,但通常不会破坏较大的模板。
是的,它将标记存储在数据库中。
您还可以将内容分成不同的自定义字段,并在模板中的任意位置显示这些字段。 因此,您用于布局的标记存储在模板中,而不是数据库中。
您可以为此创建自定义字段或元框。如果你不想写代码,有一个非常流行的插件:http://www.advancedcustomfields.com/
一般来说,您不应该将编辑器用于模板设计,而是用于内容。
对于模板设计,更改模板文件,例如,如果它是关于"post",那么为此更改"single.php"文件。
But what if I have a number of divs WITHIN the_content, for example some images may have a div id="image-small" others may have a div "image-large"
图像已经有 class 和您选择的图像尺寸,所以您不需要用 div 包裹它并给它一个尺寸 class,如果出于某种原因,您只想影响特定图像,因此您 class 每个图像都有图像 ID。
如果你需要,你可以安装 TinyMCE Advanced,它会给你一个选项来添加特定的 classes 到编辑器并使用它来设计编辑器内的特定部分,例如:如果您想在编辑器中为某些图像添加边框半径,您可以通过将此代码放入您的 "functions.php" 文件中来将 class border_radius 添加到编辑器:
add_filter( 'tiny_mce_before_init', 'tuts_mce_before_init' );
function tuts_mce_before_init( $settings ) {
$style_formats = array(
array(
'title' => __('Border Radius', 'your_theme'),
'selector' => 'p',
'classes' => 'border_radius',
)
);
$settings['style_formats'] = json_encode( $style_formats );
return $settings;
}
您将在 "format" 选项卡下的编辑器中看到 > "formats" class "border-radius",现在将其添加到您想要的图像/其他元素。
将 class 添加到带有您想要的设置的 CSS 样式文件中,您就完成了。