我创建了一个分配了自定义模板的新页面。当我访问该页面的URL时, 我看到的似乎是默认页面布局(不是我的模板), 并且管理工具栏显示了与媒体有关的选项(例如:编辑媒体)。
经过一番挠头之后, 我推断出该url必须以某种方式指向媒体项目。我编辑了页面标签, 然后”
宾果式”
实际页面按预期显示。当我访问原始URL(从第一个子段开始)时, 我看到了相同的媒体项目。
底线:似乎页面和媒体项恰好具有相同的名称, 这以某种方式导致WP的连线交叉。
我的问题:有人可以帮助我了解这种情况如何/为什么发生吗? WordPress是否会创建到媒体库中所有内容的魔术永久链接(wp-content / uploads / …
中的位置除外)?
注意:媒体项目通常已上传到媒体库(不是FTP到根目录等)
#1是的, 在WordPress中, 你不能有重复的子弹/类别/分类法/标签。因此, 如果你的主题允许媒体文件和永久链接拥有自己的页面, 并且该段与另一个页面相同, 则该段通常会附加一个数字, 因为数据库不喜欢它。
媒体”
示例”
页面slug”
example”
将不起作用, 因为该slug已经存在, 如果在管理员中完成, 它将自动将slug更改为”
example-1″
。
#2我只是有这个问题, 并像这样解决它:
$post_s=get_posts('posts_per_page=-1');
foreach($post_s as $p){
$atts = get_posts('post_type=attachment&
name='.$p->
post_name.'&
posts_per_page=-1&
post_status=inherit');
foreach($atts as $att){
echo 'found!! '.$p->
post_name;
// Update post 37
$my_post = array(
'ID'=>
$atts->
ID, 'post_name' =>
$att->
post_name.'-image'
);
// Update the post into the database
wp_update_post( $my_post );
}
}
#3这是一个较晚的答案, 但我想给出alesub给出的答案的简洁版本。
function wp21418_append_to_post_name() {// Checks to see if the option images_updated has been set or has a value of true.
if ( get_option( 'images_updated' ) === 'true' ) :
return;
endif;
// get all attachment posts.
$attachments = get_posts([
'post_type' =>
'attachment', 'post_status' =>
'inherit', 'name' =>
$p->
slug, 'posts_per_page' =>
-1, ]);
// For each attachment, loop and update the post_name
foreach($attachments as $p){$attachment = array(
'ID'=>
$p->
ID, 'post_name' =>
$p->
post_name.'-image'
);
// Update the post into the database
wp_update_post( $attachment );
}// Once everything is looped, add the option to the database.
add_option( 'images_updated', 'true' );
}add_action( 'after_setup_theme', 'wp21418_append_to_post_name' );
设置主题之后, 此功能将在动作挂钩上运行。第一行检查以查看数据库images_updated中是否有一个选项。如果存在该选项, 则我们对该函数进行保释, 并且不进行任何处理。否则, 如果该选项不存在, 它将运行该函数并在最后设置该选项。
这样就可以只运行一次。刷新后不必删除该功能。如果要再次运行它, 只需删除顶部的if语句。需要注意的是:这样做将在post_names的末尾添加另一个-image, 即使它们已经具有-image了(例如-image-image)
【WordPress的页面slug与媒体库项冲突】对于这种情况, 可能会有更多的文件名检查。如果有人真的需要, 将使用该信息来更新答案。
推荐阅读
- WordPress分页不起作用
- wordpress输出额外的html代码
- WordPress(在子主题中覆盖父主题类函数)
- WordPress.org主题提交
- 阿里云镜像OpenSUSE全新安装并更改阿里OpenSUSE镜像源?
- wireshark启动报错 由于找不到msvcp140.dll无法继续执行代码
- 音响DSP|ENC降噪DSP|USB麦克风芯片|USB耳机芯片|TYPE-C麦克风芯片|192K/24位耳机芯片
- kubernetes-nginx+php访问集群外mysql部署wordpress
- 阿里云镜像使用阿里云openssh镜像安装配置SSH服务