WordPress教程
模板兔提供专业的wordpress建站教程、wordpress主题开发教程、wordpress插件开发教程、wordpress二次开发教程等。
WordPress教程:有时候我们需要网站前端让用户上传图片,可是wordpress默认的只有编辑权限才能在前端上传,但是一般默认的用户权限是订阅者或者投稿者,所以得改改他们的权限,代码如下:
function MBT_enable_file_uploads_by_role( ) {
$role = 'subscriber';//这是角色
if(!current_user_can($role) || current_user_can('upload_files'))
return;
$contributor = get_role( $role );
$contributor->add_cap('upload_files');
} add_action('admin_init', 'MBT_enable_file_uploads_by_role');
WordPress教程:有时候我们遇到文章多字段多重排序,或者说一个字段排序同时又得判断是否含有另一个字段或另一个字段值等于某个值,看以下代码:
<?php
//多个字段多重排序
$args = array(
'post_type' => 'words',
'meta_query' => array(
array(
'key' => 'word_count',
'orderby' => 'meta_value_num',
'order' => DESC
,
),
array(
'key' => 'title',
'orderby' => 'meta_value',
'order' => DESC
),
arr...
WordPress教程:$post = array(
'comment_status' => 'closed',
'ping_status' => 'closed',
'post_author' => 2,
'post_content' => $_POST['synopsis'],
'post_name' => sanitize_title($_POST['title']),
'post_status' => 'private',
'post_title' => $_POST['title'],
'post_type' => 'film',
'tax_input' => array(
'film_category' => array(
$_POST['category']
)
)
);
$new_film_id = wp_insert_p...
WordPress教程:js代码例如:
<script>
jQuery(document).ready(function(){
jQuery("#viptable .quxiaovip").click(function(){
jQuery.ajax({
url: '<?php echo admin_url( 'admin-ajax.php' );?>',
type: "POST",
data: {
action:"quxiaovip",
id:jQuery(this).data("id"),
},
success: function(data) {
alert(data);
location.reload(true);
}
});
});
});
</script>
php代码例如:
function quxiaovip_callback(){
// do something
echo 'mobantu';
}
add_action( 'wp_ajax_quxiaovip', 'quxiaovip_callback');
注意以上quxiaovip字符串需要一致!
WordPress教程:wordpress在默认情况下可以使用文章的一个自定义字段进行排序,代码如下:
$args = array(
'meta_key' => 'sort',
'orderby' => 'meta_value_num', // 须 WordPress 2.8 及以上版本
'order' => DESC
);
$arms = array_merge($args, $wp_query->query);
query_posts($arms);
while (have_posts())
//循环内容
endwhile;wp_reset_query();
但是有时候我们可能会碰到更加复杂的情况,需要对两个自定义字段进行组合排序,方法如下:
$query = "SELECT wposts.*, wpostmeta1.*, wpostmeta2.*
FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta1, $wpdb->postmeta wpostmeta2
WHERE wposts....
WordPress教程:if( !class_exists('CustomPostTypeArchiveInNavMenu') ) {
class CustomPostTypeArchiveInNavMenu {
function CustomPostTypeArchiveInNavMenu() {
add_action( 'admin_head-nav-menus.php', array( &$this, 'cpt_navmenu_metabox' ) );
add_filter( 'wp_get_nav_menu_items', array( &$this,'cpt_archive_menu_filter'), 10, 3 );
}
function cpt_navmenu_metabox() {
add_meta_box( 'add-cpt', __('自定义文章类型存档'), array( &$this, 'cpt_navmenu_metabox_content' ), 'nav-menus', 'side', 'default' );
}
function cpt_navmenu_metabox_content() {
$post_types = get_post_types( array( 'show_in...
WordPress教程:有时候,我们需要通过分类的序号来排序分类列表,wordpress的分类有个term_order属性,默认为0。
<?php
function mbt_add_category_field(){
echo '<div class="form-field">
<label for="cat-num">序号</label>
<input name="_term_order" id="cat-num" type="text" value="" size="40">
<p>专题列表排序,数字越好,越靠前</p>
</div>';
}
add_action('category_add_form_fields','mbt_add_category_field',10,2);
// 分类编辑字段
function mbt_edit_category_field($tag){
echo '<tr class="form-field">
<th scope="row"><label for="c...
WordPress教程:有时候,我们需要显示指定文章ID数组的文章列表,那么看看下面代码,可能会帮助到你:
方法一:
<?php
$ids = array(548,555,587,583,585);
$my_query = query_posts(array('post__in' => $ids,'post_type'=> 'parks'));
global $post;
foreach ($my_query as $post) {
$posts_by_id[$post->ID] = $post;
}
foreach ($ids as $id) {
if (!$post = $posts_by_id[$id]) continue;
setup_postdata($post);
echo '<p>TITLE: ';the_title();echo ' - ';the_ID(); '</p>';
the_content();
}
?>
方法二:(如果需要分页)
<?php
global $wp_query;
$args = array_merge( $wp_query->q...
WordPress教程:/* 评论作者和谐,使昵称部分隐藏,例如:ad**n 。*/
function cut_str($string, $sublen, $start = 0, $code = 'UTF-8')
{
if($code == 'UTF-8')
{
$pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";
preg_match_all($pa, $string, $t_string);
if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen));
return join('', array_slice($t_string[0], $start, $sublen));
}
else
{
$start = $start*2;
$sublen ...
WordPress教程:有时候我们需要在列表里显示某个自定义字段不为空的文章,比如用woocommerce插件时,只显示on sale的产品,那么代码如下:
$args = array(
'post_type' => 'product',
'meta_query' => array(
array(
'key' => '_sale_price', //自定义字段
'value'=> '',
'compare' => '!='
)
)
);
//另一种形式
array(
'prdctfltr' => 'active',
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => $prdctfltr_global['posts_per_page'],
'meta_query' => array(
array(
'key' => '_visibility',
'value' => array('catalog', 'visible'),
'compare...
WordPress教程:WordPress中创建一个公用帐号,密码公开,任何人都可以使用。但是又不想让使用这个帐号的人修改帐号的密码等个人资料信息,那怎么办呢?
既然如此,因为这个帐号是唯一的,所以问题也很好解决,禁止该用户浏览后台的个人资料页面即可。我们在当前主题的functions.php中添加以下代码:
function mobantu_disable_user_profile() {
if ( is_admin() ) {
$user = wp_get_current_user();
if ( 2 == $user->ID ) // 2 改成该用户的id
wp_die( '禁止访问' );
}
}
add_action( 'load-profile.php', 'mobantu_disable_user_profile' );
当然,如果你使用前台的用户管理功能,以上方法就失效了。
WordPress教程:我在WordPress后台某篇文章的编辑页面,给这篇文章选择了分类:WordPress,接着同时选择了标签:php、主题制作,这时分类(WordPress)就与标签(php、主题制作)建立了关联,利用这种关联我们实现很多种需求,最典型的是细化WordPress文章分类功能,在子分类无法达到我们的需求时,可以使用标签来细化。我只需要提供WordPress分类的id,就可以得到它关联的标签:php、主题制作。
调用函数
我们可以先在主题目录的下的functions.php添加以下函数:
function mobantu_get_category_tags($args) {
global $wpdb;
$tags = $wpdb->get_results
("
SELECT DISTINCT terms2.term_id as tag_id, terms2.name as tag_na...
WordPress教程:WordPress自带一项功能,就是访客对文章发表评论后,可以设置:在评论显示之前 须经由管理员审核,这可以避免了一些垃圾评论对网站的影响。对此,有评论等待审核时,WordPress会自动给网站管理员发送一封通知邮件,但是评论被管理员审核通过后,WordPress并不会给评论者发送通知,这会给正常的评论者造成一些困惑。
如何让评论通过审核后,给评论者发送一封通知邮件呢?我们可以在当前主题的functions.php中添加以下PHP代码:
add_action('comment_unapproved_to_approved', 'mobantu_comment_approved');
function mobantu_comment_approved($comment) {
if(is_email($comment->comment_author_email)) {
$post_link = get...
WordPress教程:回复某位评论者的留言时,在留言前面加个 @评论者,这样可以更好地分辨是给谁回复。
也许网上已经有相关的教程,但是这里也分享一下我的实现方法,在当前主题functions.php中添加以下代码:
function mobantu_comment_add_at( $commentdata ) {
if( $commentdata['comment_parent'] > 0) {
$commentdata['comment_content'] = '@<a href="#comment-' . $commentdata['comment_parent'] . '">'.get_comment_author( $commentdata['comment_parent'] ) . '</a> ' . $commentdata['comment_content'];
}
return $commentdata;
}
add_action( 'preprocess_comment' , 'mobantu_comment_add_at', 20);
以...
WordPress教程:首先,定义实现函数,将以下php代码复制到当前主题的functions.php中:
function mobantu_get_cat_postcount($id) { //id是分类ID
// 获取当前分类信息
$cat = get_category($id);
// 当前分类文章数
$count = (int) $cat->count;
// 获取当前分类所有子孙分类
$tax_terms = get_terms('category', array('child_of' => $id));
foreach ($tax_terms as $tax_term) {
// 子孙分类文章数累加
$count +=$tax_term->count;
}
return $count;
}
//使用方法
<?php echo 'ID为123的分类及其子孙分类的文章数量为:' . mobantu_get_cat_postcount(123);?>