如何自动将自定义页面 slug 自动分配给 WordPress 页面?
How to auto assign custom page slugs to WordPress pages automatically?
感谢 I have this php code to auto generate some pages upon my custom theme's activation (Works great) however I would like to also be able to also customize the slugs that get created for each page for example for the page Tool Brands
I would like the slug to be just brands
This is important for a few reasons, 1) For ease of customer use www.domain.com/brands 和 2) 我的页面标题是根据页面名称自动生成的,所以我想保留 Tool Brands
作为页面名称,但在这种情况下它也会创建我不想要的鼻涕虫 tool-brands
。
感谢您的帮助 - 清楚地为我写出来将是一个很大的帮助,因为我几乎不知道 PHP。
代码在下面,也在 PasteBin
<?php
declare(strict_types=1);
function your_theme_create_page($page_title, $page_content)
{
$page_obj = get_page_by_title($page_title, 'OBJECT', 'page');
if ($page_obj) {
return false;
exit();
}
$page_args = array(
'post_type' => 'page',
'post_status' => 'publish',
'post_title' => ucwords($page_title),
'post_name' => strtolower(trim($page_title)),
'post_content' => $page_content,
);
$page_id = wp_insert_post($page_args);
return $page_id;
}
// Second Section of Code
add_action('after_switch_theme', 'my_custom_pages_on_theme_activation');
function my_custom_pages_on_theme_activation()
{
$pages_array = array(
'Home' => '',
'News' => '',
'Products' => '',
'Policy' => '',
'Services' => '',
'Tool Brands' => '',
);
foreach ($pages_array as $page_title => $page_content) {
$current_page = your_theme_create_page($page_title, $page_content);
if (false != $current_page) {
add_action('admin_notices', function () use ($page_title) {
?>
<div class="notice notice-success is-dismissible">
<p><?php echo "Done! {$page_title} has been created"; ?></p>
</div>
<?php
});
} else {
add_action('admin_notices', function () use ($page_title) {
?>
<div class="notice notice-warning is-dismissible">
<p><?php echo "{$page_title} was not created! Check whether it already exists"; ?></p>
</div>
<?php
});
}
}
$blog_page = get_page_by_title('news', 'OBJECT', 'page');
if ($blog_page) {
update_option('page_for_posts', $blog_page->ID);
}
$front_home_page = get_page_by_title('home', 'OBJECT', 'page');
if ($front_home_page) {
update_option('page_on_front', $front_home_page->ID);
update_option('show_on_front', 'page');
}
}
您需要向带有 slug 的 your_theme_create_page() 函数再添加一个变量。
并将数组格式更改为多维
<?php
declare(strict_types=1);
function your_theme_create_page($page_title, $page_content, $new_post_name, $new_post_status)
{
$page_obj = get_page_by_title($page_title, 'OBJECT', 'page');
if ($page_obj) {
return false;
exit();
}
$page_args = array(
'post_type' => 'page',
'post_status' => $new_post_status,
'post_title' => ucwords($page_title),
'post_name' => $new_post_name,
'post_content' => $page_content,
);
$page_id = wp_insert_post($page_args);
return $page_id;
}
// Second Section of Code
add_action('after_switch_theme', 'my_custom_pages_on_theme_activation');
function my_custom_pages_on_theme_activation()
{
$pages_array = array(
"1" => array(
"post_title" => 'Home title here',
"post_content" => 'Home content here',
"post_name" => 'home_slug_here',
"post_status" => 'private',
),
"2" => array(
"post_title" => 'News title here',
"post_content" => 'News content here',
"post_name" => 'news_slug_here',
),
"3" => array(
"post_title" => 'title here 3',
"post_content" => 'content here 3',
"post_name" => 'slug_here3',
),
);
foreach ($pages_array as $page_array) {
$page_title = $page_array['post_title'];
$page_content = $page_array['post_content'];
$new_post_name = $page_array['post_name'];
if(isset($page_array['post_status'])) {
$new_post_status= $page_array['post_status'];
} else {
$new_post_status = 'publish';
}
$current_page = your_theme_create_page($page_title, $page_content, $new_post_name, $new_post_status );
if (false != $current_page) {
add_action('admin_notices', function () use ($page_title) {
?>
<div class="notice notice-success is-dismissible">
<p><?php echo "Done! {$page_title} has been created"; ?></p>
</div>
<?php
});
} else {
add_action('admin_notices', function () use ($page_title) {
?>
<div class="notice notice-warning is-dismissible">
<p><?php echo "{$page_title} was not created! Check whether it already exists"; ?></p>
</div>
<?php
});
}
}
$blog_page = get_page_by_title('news', 'OBJECT', 'page');
if ($blog_page) {
update_option('page_for_posts', $blog_page->ID);
}
$front_home_page = get_page_by_title('home', 'OBJECT', 'page');
if ($front_home_page) {
update_option('page_on_front', $front_home_page->ID);
update_option('show_on_front', 'page');
}
}
感谢 Tool Brands
I would like the slug to be just brands
This is important for a few reasons, 1) For ease of customer use www.domain.com/brands 和 2) 我的页面标题是根据页面名称自动生成的,所以我想保留 Tool Brands
作为页面名称,但在这种情况下它也会创建我不想要的鼻涕虫 tool-brands
。
感谢您的帮助 - 清楚地为我写出来将是一个很大的帮助,因为我几乎不知道 PHP。
代码在下面,也在 PasteBin
<?php
declare(strict_types=1);
function your_theme_create_page($page_title, $page_content)
{
$page_obj = get_page_by_title($page_title, 'OBJECT', 'page');
if ($page_obj) {
return false;
exit();
}
$page_args = array(
'post_type' => 'page',
'post_status' => 'publish',
'post_title' => ucwords($page_title),
'post_name' => strtolower(trim($page_title)),
'post_content' => $page_content,
);
$page_id = wp_insert_post($page_args);
return $page_id;
}
// Second Section of Code
add_action('after_switch_theme', 'my_custom_pages_on_theme_activation');
function my_custom_pages_on_theme_activation()
{
$pages_array = array(
'Home' => '',
'News' => '',
'Products' => '',
'Policy' => '',
'Services' => '',
'Tool Brands' => '',
);
foreach ($pages_array as $page_title => $page_content) {
$current_page = your_theme_create_page($page_title, $page_content);
if (false != $current_page) {
add_action('admin_notices', function () use ($page_title) {
?>
<div class="notice notice-success is-dismissible">
<p><?php echo "Done! {$page_title} has been created"; ?></p>
</div>
<?php
});
} else {
add_action('admin_notices', function () use ($page_title) {
?>
<div class="notice notice-warning is-dismissible">
<p><?php echo "{$page_title} was not created! Check whether it already exists"; ?></p>
</div>
<?php
});
}
}
$blog_page = get_page_by_title('news', 'OBJECT', 'page');
if ($blog_page) {
update_option('page_for_posts', $blog_page->ID);
}
$front_home_page = get_page_by_title('home', 'OBJECT', 'page');
if ($front_home_page) {
update_option('page_on_front', $front_home_page->ID);
update_option('show_on_front', 'page');
}
}
您需要向带有 slug 的 your_theme_create_page() 函数再添加一个变量。 并将数组格式更改为多维
<?php
declare(strict_types=1);
function your_theme_create_page($page_title, $page_content, $new_post_name, $new_post_status)
{
$page_obj = get_page_by_title($page_title, 'OBJECT', 'page');
if ($page_obj) {
return false;
exit();
}
$page_args = array(
'post_type' => 'page',
'post_status' => $new_post_status,
'post_title' => ucwords($page_title),
'post_name' => $new_post_name,
'post_content' => $page_content,
);
$page_id = wp_insert_post($page_args);
return $page_id;
}
// Second Section of Code
add_action('after_switch_theme', 'my_custom_pages_on_theme_activation');
function my_custom_pages_on_theme_activation()
{
$pages_array = array(
"1" => array(
"post_title" => 'Home title here',
"post_content" => 'Home content here',
"post_name" => 'home_slug_here',
"post_status" => 'private',
),
"2" => array(
"post_title" => 'News title here',
"post_content" => 'News content here',
"post_name" => 'news_slug_here',
),
"3" => array(
"post_title" => 'title here 3',
"post_content" => 'content here 3',
"post_name" => 'slug_here3',
),
);
foreach ($pages_array as $page_array) {
$page_title = $page_array['post_title'];
$page_content = $page_array['post_content'];
$new_post_name = $page_array['post_name'];
if(isset($page_array['post_status'])) {
$new_post_status= $page_array['post_status'];
} else {
$new_post_status = 'publish';
}
$current_page = your_theme_create_page($page_title, $page_content, $new_post_name, $new_post_status );
if (false != $current_page) {
add_action('admin_notices', function () use ($page_title) {
?>
<div class="notice notice-success is-dismissible">
<p><?php echo "Done! {$page_title} has been created"; ?></p>
</div>
<?php
});
} else {
add_action('admin_notices', function () use ($page_title) {
?>
<div class="notice notice-warning is-dismissible">
<p><?php echo "{$page_title} was not created! Check whether it already exists"; ?></p>
</div>
<?php
});
}
}
$blog_page = get_page_by_title('news', 'OBJECT', 'page');
if ($blog_page) {
update_option('page_for_posts', $blog_page->ID);
}
$front_home_page = get_page_by_title('home', 'OBJECT', 'page');
if ($front_home_page) {
update_option('page_on_front', $front_home_page->ID);
update_option('show_on_front', 'page');
}
}