我长期以来都是Wordpress主题的初学者(我在这里和那里为自己做一些事情),我有一个问题。我运行了一个非常大的网站,我正试图重新设计它(响应等),并遇到了一个问题。。。
基本上,我的内容是文本,然后是每个帖子下面的视频或图像。我试图将我的标签定位在文本下方,但媒体之前,因此:-
我的问题是是否可以这样做。。不知何故,在段落之后但在媒体之前插入标签?
以防万一,我的函数文件中有这个,以帮助控制嵌入的视频。。
/** embed modifyer */
function video_embed_html( $html ) {
return \'<div class="innerpostvideo">\' . $html . \'</div>\';
}
add_filter( \'embed_oembed_html\', \'video_embed_html\', 10 );
提前谢谢!!
PS我不能编辑每一篇文章来做到这一点。。我有近10000个帖子
编辑:我应该提到的图像也是链接。
更新:用户Pat J提出了一个很好的解决方案,但有几个问题。在图像贴子上,它几乎按预期工作,只是它在;“a”;img的标签。在视频帖子上,它的行为有点奇怪,它的顺序是:-1,段落2,视频3,我的自定义HTML 4,段落重复5,视频重复,所以它会打印两次内容。他的代码如下:-
add_filter( \'the_content\', \'wpse377076_insert_above_image\', 20 );
/**
* Inserts some HTML above a piece of media (image or video).
*
* @param string $content The post/page content.
* @return string The filtered content.
*/
function wpse377076_insert_above_image( $content ) {
// Checks for <img tags in the content.
if ( false !== strpos( $content, \'<img\' ) || false !== strpos( $content, \'<div class="innerpostvideo\' ) ) {
// Only inserts above the first image/video.
$image_position = strpos( $content, \'<img\' );
$video_position = strpos( $content, \'<div class="innerpostvideo\' );
// Gets the position of the first item.
$position = 0;
if ( false !== $image_position ) {
$position = $image_position;
}
if ( false !== $video_position && $video_position < $image_position ) {
$position = $video_position;
}
$content_up_to_first_media = substr( $content, 0, $position-1 );
$content_after_first_media = substr( $content, $position );
$content =
$content_up_to_first_media .
\'<div class="my-tags">My custom HTML</div>\' .
$content_after_first_media;
}
return $content;
}
SO网友:Pat J
我想出了这个,看起来很管用。
备注:
它在嵌入帖子内容的第一个图像/媒体之前添加自定义HTML;如果有多个图像/视频,它将只放置一次自定义HTML,它需要innerpostvideo
您在问题中提到的div可以将代码添加到活动主题的functions.php
文件,或编写自定义插件。
add_filter( \'the_content\', \'wpse377076_insert_above_image\', 20 );
/**
* Inserts some HTML above a piece of media (image or video).
*
* @param string $content The post/page content.
* @return string The filtered content.
*/
function wpse377076_insert_above_image( $content ) {
// Checks for <img tags in the content.
if ( false !== strpos( $content, \'<img\' ) || false !== strpos( $content, \'<div class="innerpostvideo\' ) ) {
// Only inserts above the first image/video.
$image_position = strpos( $content, \'<img\' );
$video_position = strpos( $content, \'<div class="innerpostvideo\' );
// Gets the position of the first item.
$position = 0;
if ( false !== $image_position ) {
$position = $image_position;
}
if ( false !== $video_position && $video_position < $image_position ) {
$position = $video_position;
}
$content_up_to_first_media = substr( $content, 0, $position-1 );
$content_after_first_media = substr( $content, $position );
$content =
$content_up_to_first_media .
\'<div class="my-tags">My custom HTML</div>\' .
$content_after_first_media;
}
return $content;
}