我创建了一个分配了自定义模板的新页面。当我访问该页面的网址时,我看到的是默认页面布局(不是我的模板),管理工具栏显示了与媒体相关的选项(例如:编辑媒体)。
经过一番头疼之后,我推断出网址必须以某种方式指向媒体项目。我编辑了页面slug和“bingo”,实际页面就像预期的那样出现。当我访问原始网址(来自第一个slug)时,我看到了相同的媒体项目。
底线:看起来巧合的是,网页和媒体项共享相同的名称,这不知何故导致WP的电线越过。
我的问题:有人可以帮我理解这是怎么回事? wordpress是否会为媒体库中的所有内容创建魔术固定链接(除了在wp-content/uploads/...
中的位置)?
注意:媒体项目已正常上传到媒体库(而不是FTP到根目录等)
答案 0 :(得分:1)
是的,在WordPress中,您不能拥有重复的slu / / categories / taxonomies / tags。因此,如果你的主题允许媒体文件和永久链接拥有自己的页面并且slug与另一个相同,它通常会附加一个数字,因为数据库不喜欢它。
media slug "示例"
page slug "示例"由于该slug已经存在,因此无法正常工作,如果在管理员中完成,它将自动将slug更改为" example-1"。
答案 1 :(得分:0)
我刚遇到这个问题并修复了这样的问题:
$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 );
}
}
答案 2 :(得分:0)
这是一个迟到的答案,但我想提供<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Validate me</title>
<script>
console.log(document.forms);
function validateForm() {
for (var i = 0; i < document.forms[0].length - 1; i++) {
if (document.forms[0][i].type == 'text' && document.forms[0][i].value == '') {
alert('Please Enter Your Full Name');
return false;
} else if (document.forms[0][i].type == 'radio') {
if (document.forms[0].gender[0].checked == false && document.forms[0].gender[1].checked == false) {
alert('Please select gender');
return false;
}
} else if (document.forms[0][i].type == 'checkbox') {
if (document.forms[0].hobbies[0].checked == false && document.forms[0].hobbies[1].checked == false && document.forms[0].hobbies[2].checked == false) {
alert('Please select hobby');
return false;
}
} else if (document.forms[0][i].type == 'select') {
if (document.forms[0].option[0].selected == false && document.forms[0].option[1].selected == false && document.forms[0].option[2].selected == false) {
alert('Please select a favorite movie')
return false;
}
}
console.log(document.forms[0][i].type);
}
}
</script>
</head>
<body>
At lease one piece of data has to come in from every input type.
<form action="form.html" method="get"><br/> Name:
<input type="text" name="fullname" placeholder="Enter Full Name" /><br/> Gender:
<br/> Male
<input type="radio" name="gender" value="male" />Female<input type="radio" name="gender" value="female" /><br/> Hobbies
<br/> Baseball <input type="checkbox" name="hobbies[]" value="baseball" /> Football <input type="checkbox" name="hobbies[]" value="football" /> Hockey <input type="checkbox" name="hobbies[]" value="hockey" /><br/> Favorite Show <select name="show">
<option value = "">Choose Below</option>
<option value = "ATHF">Aqua Teen Hunger Force</option>
<option value = "Family Guy">Family Guy</option>
<option value = "Simpsons">Simpsons</option>
</select><br/> Comments
<br/>
<textarea cols="50" rows="6" name="comments">Enter Comments</textarea>
<br/>
<input type="button" name="submit" value="enter me" onclick="return validateForm();" />
</form>
</body>
</html>
给出的答案的更清晰版本。
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
末尾添加另一个-image
,即使他们已经post_names
(例如-image
)
可能会有更多文件名检查这种情况。如果有人确实需要,将更新答案。