您的“ functions.php”文件的最佳代码收集
-
-
请同时添加您现有的旧发现.Pleae add your old, existing findings as well.
- 0
- 2010-09-09
- hakre
-
* @ NetConstructor *,您好:我担心这个问题,因为它是StackExchange人们告诉我们要注意的" X列表"问题:http://meta.stackexchange.com/questions/57226/should-we-有一个x封闭原因的列表我最关心的是,当我想到您的问题时,我可以预见几乎无限数量的答案,因此,我担心这个问题将导致随机抽取答案,但没有确定的答案.我想在投票结束之前就此征询他人的意见,尽管我不想太费力,我只是担心.Hi *@NetConstructor*: I'm concerned about this question because it's a "List of X" question the StackExchange people have told us to look out for: http://meta.stackexchange.com/questions/57226/should-we-have-a-list-of-x-close-reason My big concern is when I think of your question I can envision an almost infinite number of answers and as such I'm concerned that this question will result in a collection of random answers but nothing definitive. I want to get other's opinions on this before I (vote to) close it though as I don't want to be heavy handed, I just have concerns.
- 1
- 2010-09-09
- MikeSchinkel
-
我的投票接近或成为社区WikiMy vote is either close or make community wiki
- 0
- 2010-09-09
- Chris_O
-
考虑到前5个答案是由OP提出的,而且这个问题似乎更适合于收集一系列答案,而不是一个确定的答案,所以这应该是社区Wiki.Considering the first 5 answers were by the OP and the question seems more geared at collecting an array of responses rather than a single, definitive answer, this should be a community wiki.
- 13
- 2010-09-09
- EAMann
-
似乎不能仅仅将一个问题修改为Wiki.这个对吗?seems that one can not just modify a question into a wiki. Is this correct?
- 0
- 2010-09-09
- NetConstructor.com
-
但是,这很有用(我已经发现了2个片段,我将大量使用),如果要成为社区Wiki,并且必须重新开始做这件事,也许我们可以将内容移到这里?Nonetheless this is useful (I have found 2 snippets I will be making heavy use of)if it's to be a community wiki and has to be started fresh to do that maybe we can just move the stuff here there?
- 1
- 2010-09-09
- Ashley G
-
@ NetConstructor.com ...我在写最后一条评论时将问题转换为Wiki.对不起,如果造成任何混乱.通常,您(作为OP)可以随时将问题变成Wiki.@NetConstructor.com ... I converted the question into a wiki when I wrote my last comment. Sorry if that caused any confusion. Normally, you (as the OP) can turn a question into a wiki at any time.
- 0
- 2010-09-10
- EAMann
-
@EAMann谢谢...我一直在寻找该选项,但不确定其位置.也许在您转换它之后,我不再看到该选项了?@EAMann thanks... I was looking for that option but was not sure where it was located. Maybe after you converted it I just did not see the option anymore?
- 0
- 2010-09-10
- NetConstructor.com
-
*@NetConstructor.com*-宾果游戏.转换后,即会转换...该选项已设置并从页面中消失.*@NetConstructor.com* - Bingo. Once it's converted, it's converted ... the option is set and disappears from the page.
- 0
- 2010-09-10
- EAMann
-
我认为这种风格不好,喜欢使用插件.a)它们是由专门的开发人员建造的b)它们是易于维护和升级的.对于少量自定义片段,我建议使用Shortcode Exec PHP插件,该插件可提供一种非常简洁且可移植的方式来自定义Wordpress.I would consider this bad style and prefer plugins. a) They are built by dedicated deveoplers b) they are maintained and easily upgraded. For little custom snippets I recommend the plugin Shortcode Exec PHP which yields a very clean -- and portable -- way to customize your Wordpress.
- 0
- 2010-11-10
- Raphael
-
虽然有趣,但我相信大多数人都会同意,当您开发主题时,您希望将东西本地化在functions.php文件中while interesting I believe most people would agree that when your developing themes you want things localized within a functions.php file
- 0
- 2010-11-24
- NetConstructor.com
-
@NetConstructor-如果您要编辑其他条目,请在这样做时请多加注意,您破坏了缩进,我一直在努力保持缩进的可读性.如果您能抽出时间来解释所做的修改,我也将不胜感激(我看不出有任何理由可以编辑您的条目-并且没有编辑摘要).@NetConstructor - If you're going to edit others entries, can you please take care when doing so, you spoiled the indentation in my posting, i always make an effort to maintain indentation for readability. I'd also appreciate it if you could take the time to explain edits you make(i couldn't see any reason for your to edit my entry - and there was no edit summary).
- 0
- 2011-01-28
- t31os
-
@t31os-我对其进行了编辑以使其与所有条目保持一致@t31os -- I edited it to keep it consistent with all of the entries
- 0
- 2011-02-07
- NetConstructor.com
-
与主题无关的所有答案都应删除.该线程是不良编码实践的一个很好的例子.All answers not related to a theme should be removed. This thread is a good example for bad coding practices.
- 17
- 2011-06-13
- fuxia
-
我将不同意.问题与主题无关.所有适用的功能.欢迎使用PHPmods,用户应相应地上下投票.I would have to disagree. Question was not related to the theme. All applicable functions.PHP mods are welcome and users should up/down vote accordingly.
- 1
- 2011-06-14
- NetConstructor.com
-
有趣的是,在您的主题目录中没有哪个地方提到functions.php文件,这引起混乱,例如:http://wordpress.stackexchange.com/questions/25341/error-after-editing-functions-PHPIt's interesting that it's not mentioned anywhere that the functions.php file is the one in your theme directory, leading to confusion, such as this: http://wordpress.stackexchange.com/questions/25341/error-after-editing-functions-php
- 1
- 2011-08-09
- scribu
-
我认为最好鼓励人们[创建自定义功能插件](http://www.doitwithwp.com/create-functions-plugin/),而不要使用其主题的functions.php.I think it'd be better to encourage people to [create a custom functionality plugin](http://www.doitwithwp.com/create-functions-plugin/) instead of using their theme's functions.php
- 17
- 2012-01-16
- Ian Dunn
-
@Cor van Noorloos对社区Wiki身份的使用已大大减少,网络不鼓励使用.简单地说:"它不太适合进行质量检查,但这是社区Wiki!"借口不再飞.这里的答案变得混乱无序且维护不善,仅因哇/乐趣因素而来.整个网络上都涌现出许多类似这样的问题.@Cor van Noorloos the use of community wiki status had been greatly reduced and discouraged by network. Simply put "it's not really good fit for QA, but it's community wiki!" excuse doesn't fly anymore. Answers here became disorderly and poorly maintained glob, only visited for wow/fun factor. There had been a lot of movement all over network to squash questions like this.
- 0
- 2012-02-19
- Rarst
-
关于关闭该特定"维基",我投票要求重新开放.显然,此Wiki帖子非常受欢迎,其事实是它具有30,000次浏览,是该网站上任何其他问题或Wiki的三倍,并且该主题本身的投票次数是119次,是任何其他问题的两倍或主题.如果您同意其价值,请点击"重新打开"链接以重新打开它.In regards to the closing of this specific "wiki" I vote that this be reopend. Obviously this wiki post is highly popular demonstrated by the fact that it has 30,000 views which is three times the amount of ANY other question or wiki on this site and the topic itself has been up-voted 119 times which is double that of any other question or topic. If you agree in its value please vote to have it reopen by clicking the "reopen" link.
- 1
- 2012-02-20
- NetConstructor.com
-
@ NetConstructor.com纯粹的页面浏览量不是质量的指标.我们应鼓励使用特定答案和良好编码习惯的特定问题.这个线程是相反的.@NetConstructor.com The pure number of page views is not an indicator for quality. We should encourage specific questions with specific answers and good coding practices. This thread is the opposite.
- 3
- 2012-02-22
- fuxia
-
@toscho-这就是为什么将其设置为Wiki的原因,因此本文完全正确.之所以提到我关于页面浏览量的观点,是因为该主题显然是本网站上任何其他主题的3倍.由于此类问题,该网站特别受欢迎,因此关闭它是没有意义的.我认为除非社区对此类主题的兴趣对管理员毫无价值,否则没人会对此进行辩论.@toscho - that is specifically why this was setup as a wiki and therefore this post is perfectly valid. The point I made in respect to page views was mentioned because this topic obviously is 3X as popular as any other topic on this site. This website is popular specifically due to questions like these and therefore it makes no sense to close it. I don't think one can debate this unless community interest in topics like these has no value towards admins.
- 0
- 2012-02-24
- NetConstructor.com
-
我将根据我刚刚做的一些数学运算在此处添加一个注释.该网站上的注册用户少于790个,得分为" 1"或更高.假设该个人群体代表实际上对该网站进行投票和/或对该网站做出贡献的人(而790人是非常公平的),那么对该问题投了赞成票的117人占该主题有用的所有活跃用户的14%以上.请投票重新打开主题.I will add one more comment on here based off some math I just did. There are less than 790 registered users on this website with a rating of "1" or more. Assuming this pool of individuals represents those who actually vote and/or contribute to this site (and 790 being incredibly fair) then 117 people who voted this question up represents 14%+ of all active users who found this topic useful. Vote to reopen the topic please.
- 0
- 2012-02-24
- NetConstructor.com
-
@ NetConstructor.com在[Meta](http://meta.wordpress.stackexchange.com/)上进行讨论,人们可以更好地了解您的论点.:)@NetConstructor.com Discuss it on [Meta](http://meta.wordpress.stackexchange.com/) where people can see your arguments better. :)
- 6
- 2012-02-24
- fuxia
-
103 个回答
- 投票数
-
- 2010-09-10
启用显示所有网站设置的隐藏管理功能
测试于: WordPress 3.1 RC3
这小段代码确实很酷.它将在您的设置菜单中添加一个附加选项,并带有指向"所有设置"链接的链接.它将向您显示数据库中与WordPress网站相关的所有设置的完整列表.下面的代码只会使该链接对管理员用户可见,而对所有其他用户隐藏.
// CUSTOM ADMIN MENU LINK FOR ALL SETTINGS function all_settings_link() { add_options_page(__('All Settings'), __('All Settings'), 'administrator', 'options.php'); } add_action('admin_menu', 'all_settings_link');
Enable Hidden Administration Feature displaying All Site Settings
Tested on: WordPress 3.1 RC3
This little piece of code does something pretty cool. It will add an additional option to your settings menu with a link to "all settings" which will show you a complete list of all the settings you have within your database related to your WordPress site. The code below will only made this link visible to an administrator user and hide it for all other users.
// CUSTOM ADMIN MENU LINK FOR ALL SETTINGS function all_settings_link() { add_options_page(__('All Settings'), __('All Settings'), 'administrator', 'options.php'); } add_action('admin_menu', 'all_settings_link');
-
神奇的发展!我经常使用选项表来存储插件的数据库版本...使用phpMyAdmin重置为旧的数据库版本以测试升级脚本是一件痛苦的事...这将使它变得"如此简单" **!!!Fantastic for development! I use the options table frequently to store DB versions for my plug-ins ... using phpMyAdmin to reset to an old DB version to test an upgrade script is a pain ... this will make it **so much easier**!!!
- 0
- 2010-09-15
- EAMann
-
您还可以通过访问yoursite/wp-admin/options.php进入相同的选项页面(登录时).You can also get to the same options page (when logged in) by going to yoursite/wp-admin/options.php
- 3
- 2015-10-09
- j08691
-
- 2010-09-10
修改登录徽标和图片网址链接
测试于: WordPress 3.0.1
此代码将使您轻松修改WordPress登录页面徽标以及该徽标的href链接和标题文本.
add_filter( 'login_headerurl', 'namespace_login_headerurl' ); /** * Replaces the login header logo URL * * @param $url */ function namespace_login_headerurl( $url ) { $url = home_url( '/' ); return $url; } add_filter( 'login_headertitle', 'namespace_login_headertitle' ); /** * Replaces the login header logo title * * @param $title */ function namespace_login_headertitle( $title ) { $title = get_bloginfo( 'name' ); return $title; } add_action( 'login_head', 'namespace_login_style' ); /** * Replaces the login header logo */ function namespace_login_style() { echo '<style>.login h1 a { background-image: url( ' . get_template_directory_uri() . '/images/logo.png ) !important; }</style>'; }
编辑:如果要使用站点徽标替换登录徽标,则可以使用以下内容动态提取该信息(在 WP3.5 上进行了测试) :
function namespace_login_style() { if( function_exists('get_custom_header') ){ $width = get_custom_header()->width; $height = get_custom_header()->height; } else { $width = HEADER_IMAGE_WIDTH; $height = HEADER_IMAGE_HEIGHT; } echo '<style>'.PHP_EOL; echo '.login h1 a {'.PHP_EOL; echo ' background-image: url( '; header_image(); echo ' ) !important; '.PHP_EOL; echo ' width: '.$width.'px !important;'.PHP_EOL; echo ' height: '.$height.'px !important;'.PHP_EOL; echo ' background-size: '.$width.'px '.$height.'px !important;'.PHP_EOL; echo '}'.PHP_EOL; echo '</style>'.PHP_EOL; }
Modify the Login Logo & Image URL Link
Tested on: WordPress 3.0.1
This code will allow you to easily modify the WordPress Login page Logo as well as the href link and title text of this logo.
add_filter( 'login_headerurl', 'namespace_login_headerurl' ); /** * Replaces the login header logo URL * * @param $url */ function namespace_login_headerurl( $url ) { $url = home_url( '/' ); return $url; } add_filter( 'login_headertitle', 'namespace_login_headertitle' ); /** * Replaces the login header logo title * * @param $title */ function namespace_login_headertitle( $title ) { $title = get_bloginfo( 'name' ); return $title; } add_action( 'login_head', 'namespace_login_style' ); /** * Replaces the login header logo */ function namespace_login_style() { echo '<style>.login h1 a { background-image: url( ' . get_template_directory_uri() . '/images/logo.png ) !important; }</style>'; }
EDIT: If you want to use the site logo to replace the login logo, you can use the following to dynamically pull that information (tested on WP3.5):
function namespace_login_style() { if( function_exists('get_custom_header') ){ $width = get_custom_header()->width; $height = get_custom_header()->height; } else { $width = HEADER_IMAGE_WIDTH; $height = HEADER_IMAGE_HEIGHT; } echo '<style>'.PHP_EOL; echo '.login h1 a {'.PHP_EOL; echo ' background-image: url( '; header_image(); echo ' ) !important; '.PHP_EOL; echo ' width: '.$width.'px !important;'.PHP_EOL; echo ' height: '.$height.'px !important;'.PHP_EOL; echo ' background-size: '.$width.'px '.$height.'px !important;'.PHP_EOL; echo '}'.PHP_EOL; echo '</style>'.PHP_EOL; }
-
- 2010-11-09
在搜索结果中包括自定义帖子类型.
// MAKE CUSTOM POST TYPES SEARCHABLE function searchAll( $query ) { if ( $query->is_search ) { $query->set( 'post_type', array( 'site', 'plugin', 'theme', 'person' )); } return $query; } add_filter( 'the_search_query', 'searchAll' );
默认情况下将自定义帖子类型添加到网站的主RSSfeed.
// ADD CUSTOM POST TYPES TO THE DEFAULT RSS FEED function custom_feed_request( $vars ) { if (isset($vars['feed']) && !isset($vars['post_type'])) $vars['post_type'] = array( 'post', 'site', 'plugin', 'theme', 'person' ); return $vars; } add_filter( 'request', 'custom_feed_request' );
在"立即添加"中添加自定义帖子类型管理员信息中心小部件
这将包括您的自定义帖子类型以及"立即注册"(Right Now)中每种类型的帖子计数仪表板小部件.
// ADD CUSTOM POST TYPES TO THE 'RIGHT NOW' DASHBOARD WIDGET function wph_right_now_content_table_end() { $args = array( 'public' => true , '_builtin' => false ); $output = 'object'; $operator = 'and'; $post_types = get_post_types( $args , $output , $operator ); foreach( $post_types as $post_type ) { $num_posts = wp_count_posts( $post_type->name ); $num = number_format_i18n( $num_posts->publish ); $text = _n( $post_type->labels->singular_name, $post_type->labels->name , intval( $num_posts->publish ) ); if ( current_user_can( 'edit_posts' ) ) { $num = "<a href='edit.php?post_type=$post_type->name'>$num</a>"; $text = "<a href='edit.php?post_type=$post_type->name'>$text</a>"; } echo '<tr><td class="first num b b-' . $post_type->name . '">' . $num . '</td>'; echo '<td class="text t ' . $post_type->name . '">' . $text . '</td></tr>'; } $taxonomies = get_taxonomies( $args , $output , $operator ); foreach( $taxonomies as $taxonomy ) { $num_terms = wp_count_terms( $taxonomy->name ); $num = number_format_i18n( $num_terms ); $text = _n( $taxonomy->labels->singular_name, $taxonomy->labels->name , intval( $num_terms )); if ( current_user_can( 'manage_categories' ) ) { $num = "<a href='edit-tags.php?taxonomy=$taxonomy->name'>$num</a>"; $text = "<a href='edit-tags.php?taxonomy=$taxonomy->name'>$text</a>"; } echo '<tr><td class="first b b-' . $taxonomy->name . '">' . $num . '</td>'; echo '<td class="t ' . $taxonomy->name . '">' . $text . '</td></tr>'; } } add_action( 'right_now_content_table_end' , 'wph_right_now_content_table_end' );
Include custom post types in the search results.
// MAKE CUSTOM POST TYPES SEARCHABLE function searchAll( $query ) { if ( $query->is_search ) { $query->set( 'post_type', array( 'site', 'plugin', 'theme', 'person' )); } return $query; } add_filter( 'the_search_query', 'searchAll' );
Add your custom post types to your sites main RSS feed by default.
// ADD CUSTOM POST TYPES TO THE DEFAULT RSS FEED function custom_feed_request( $vars ) { if (isset($vars['feed']) && !isset($vars['post_type'])) $vars['post_type'] = array( 'post', 'site', 'plugin', 'theme', 'person' ); return $vars; } add_filter( 'request', 'custom_feed_request' );
Include custom post types in "Right Now" admin dashboard widget
This will include your custom post types and the post counts for each type in the "Right Now" dashboard widget.
// ADD CUSTOM POST TYPES TO THE 'RIGHT NOW' DASHBOARD WIDGET function wph_right_now_content_table_end() { $args = array( 'public' => true , '_builtin' => false ); $output = 'object'; $operator = 'and'; $post_types = get_post_types( $args , $output , $operator ); foreach( $post_types as $post_type ) { $num_posts = wp_count_posts( $post_type->name ); $num = number_format_i18n( $num_posts->publish ); $text = _n( $post_type->labels->singular_name, $post_type->labels->name , intval( $num_posts->publish ) ); if ( current_user_can( 'edit_posts' ) ) { $num = "<a href='edit.php?post_type=$post_type->name'>$num</a>"; $text = "<a href='edit.php?post_type=$post_type->name'>$text</a>"; } echo '<tr><td class="first num b b-' . $post_type->name . '">' . $num . '</td>'; echo '<td class="text t ' . $post_type->name . '">' . $text . '</td></tr>'; } $taxonomies = get_taxonomies( $args , $output , $operator ); foreach( $taxonomies as $taxonomy ) { $num_terms = wp_count_terms( $taxonomy->name ); $num = number_format_i18n( $num_terms ); $text = _n( $taxonomy->labels->singular_name, $taxonomy->labels->name , intval( $num_terms )); if ( current_user_can( 'manage_categories' ) ) { $num = "<a href='edit-tags.php?taxonomy=$taxonomy->name'>$num</a>"; $text = "<a href='edit-tags.php?taxonomy=$taxonomy->name'>$text</a>"; } echo '<tr><td class="first b b-' . $taxonomy->name . '">' . $num . '</td>'; echo '<td class="t ' . $taxonomy->name . '">' . $text . '</td></tr>'; } } add_action( 'right_now_content_table_end' , 'wph_right_now_content_table_end' );
-
关于此答案的最后一个片段.这是一个很棒的补充,因为我为每种帖子类型手动添加了这些.我唯一的问题是它将数据添加到默认的"类别"和"标签"条目之后.您能否更新答案以将默认的"类别"或"标记"项下移或删除,以便可以手动添加?Regarding the last snippet to this answer. This is a great addition as I was adding these manually for each post type. The only issue I have with this is that it adds the data after the default "category" and "tag" entry. Could you update your answer to move the default "category" or "tag" ones down or remove them so that they can be added manually?
- 0
- 2011-02-22
- NetConstructor.com
-
@ NetConstructor.com我认为我不理解您的要求.如果我这样做了,那么我认为这将是一件困难的事情,并且现在还没有真正的时间去思考如何做.@NetConstructor.com I don't think I understand your request. If I do, then I think it would be a bit more of a difficult thing to do, and don't really have time right now to figure out how to do it.
- 0
- 2011-02-23
- jaredwilli
-
在搜索结果中包含自定义帖子类型-我想,现在您可以使用register_post_type`的`exclude_from_search`参数来执行此操作...Include custom post types in the search results - I guess, now you can do this with `exclude_from_search` param of `register_post_type`...
- 0
- 2013-12-16
- Krzysiek Dróżdż
-
- 2010-09-09
为ADMIN用户以外的所有用户删除更新通知
测试于: WordPress 3.0.1
此代码将确保除" admin"外没有其他用户可以访问可用更新时,WordPress会通知您.
// REMOVE THE WORDPRESS UPDATE NOTIFICATION FOR ALL USERS EXCEPT SYSADMIN global $user_login; get_currentuserinfo(); if ($user_login !== "admin") { // Change admin to the username that gets the updates add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ), 2 ); add_filter( 'pre_option_update_core', create_function( '$a', "return null;" ) ); }
更改版本以仅显示管理员用户的更新通知(而不只是用户" admin"):
// REMOVE THE WORDPRESS UPDATE NOTIFICATION FOR ALL USERS EXCEPT SYSADMIN global $user_login; get_currentuserinfo(); if (!current_user_can('update_plugins')) { // Checks to see if current user can update plugins add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ), 2 ); add_filter( 'pre_option_update_core', create_function( '$a', "return null;" ) ); }
Remove Update Notification for all users except ADMIN User
Tested on: WordPress 3.0.1
This code will ensures that no users other than "admin" are notified by WordPress when updates are available..
// REMOVE THE WORDPRESS UPDATE NOTIFICATION FOR ALL USERS EXCEPT SYSADMIN global $user_login; get_currentuserinfo(); if ($user_login !== "admin") { // Change admin to the username that gets the updates add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ), 2 ); add_filter( 'pre_option_update_core', create_function( '$a', "return null;" ) ); }
Changed version to only show update notification for admin users (as opposed to just the user 'admin'):
// REMOVE THE WORDPRESS UPDATE NOTIFICATION FOR ALL USERS EXCEPT SYSADMIN global $user_login; get_currentuserinfo(); if (!current_user_can('update_plugins')) { // Checks to see if current user can update plugins add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ), 2 ); add_filter( 'pre_option_update_core', create_function( '$a', "return null;" ) ); }
-
这远远不理想.仅当管理员的登录名仍然是默认的" admin"时,它才起作用,出于安全原因,不应使用默认的" admin".相反,您应该检查希望人们看到消息的特定功能.This is far less than ideal. It will only work if the admin's login is still the default 'admin', which it shoudln't be for security reasons. Instead you should check for a specific capability that you want people to have to see messages.
- 8
- 2010-09-11
- jerclarke
-
即if(!current_user_can('manage_options')){... add_filter ...}-对不起,我有两次评论,我忘了按回车键提交评论)I.e. if (!current_user_can('manage_options')) {...add_filter...} -- Sorry about double comment, I forgot that hitting enter submits comments)
- 1
- 2010-09-11
- jerclarke
-
这就是为什么我在代码中添加注释的地方,您可以在其中更改管理员用户名.您将如何改善/重写它?Thats why I added the comment to the code where you can change the admin username. How would you improve/rewrite it?
- 0
- 2010-09-12
- NetConstructor.com
-
最好的方法是删除全局$ user_login和get_currentuserinfo(),而在if子句中使用current_user_can.它只有1行,而不是3行及其标准方式.您可以检查对消息进行ACT所需的特定功能,在这种情况下,具有" update_core"和" update_plugins".The best way is to remove the global $user_login and get_currentuserinfo() and instead use current_user_can in your if clause. It's only 1 line instead of 3 and its the standard way. You can check for the specific capability that would be needed to ACT on the messages, in this case there's 'update_core' and 'update_plugins'.
- 0
- 2010-09-12
- jerclarke
-
因此:if(!current_user_can('update_plugins')){/*删除邮件*/}so: if (!current_user_can('update_plugins')) {/*REMOVE MESSAGES*/}
- 2
- 2010-09-12
- jerclarke
-
所以完整的代码看起来像什么?so the full code would look like what?
- 0
- 2010-09-13
- NetConstructor.com
-
@Jeremy Clarke,那么这段代码将成为正确的处理方式吗?但是,如果您只想允许特定的用户名获得通知,那么上面的代码将是最好的方法吗? 如果(!current_user_can('update_plugins')){ add_action('init',create_function('$ a'," remove_action('init','wp_version_check');"),2); add_filter('pre_option_update_core',create_function('$ a',"返回null;")); }@Jeremy Clarke so would this code then be the correct way of doing things? But, if you just wanted to allow a specific username to get the notices would the code above be the best way? if (!current_user_can('update_plugins')) { add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ), 2 ); add_filter( 'pre_option_update_core', create_function( '$a', "return null;" )); }
- 0
- 2010-09-17
- NetConstructor.com
-
如果您想检查一个特定的用户名,我想您在原始答案中的代码是可以接受的,尽管可能有一种更有效的方法.使用我的解决方案的完整代码看起来像您上次评论中的内容.它与您的答案相同,但是使用current_user_can()检查而不是$ user_login!=='admin'.If you wanted to check for a specific user name I suppose your code in the original answer is acceptable, though there may be a slightly more effective way. The full code using my solution would look like what you have in your last comment. It's the same as your answer but with the current_user_can() check instead of the $user_login !== 'admin'.
- 0
- 2010-09-22
- jerclarke
-
我编辑了答案,并添加了使用current_user_can('update_plugins')的版本I edited the answer and added the version that uses current_user_can('update_plugins')
- 0
- 2010-09-27
- Travis Northcutt
-
这种逻辑必须深入核心This logic must go inside the core
- 0
- 2010-12-27
- Atif Mohammed Ameenuddin
-
我只是尝试了代码.但是,如果使用代码,则会出现一些错误页面.两个代码都存在相同的问题I just tried the codes. But I am getting some error page if I use the codes. Same problem with both the codes
- 0
- 2011-06-29
- user391
-
我认为这些片段多年来失去了相关性.在实际的WordPress中,管理员是唯一看到更新通知的人.I think this snippet lost it's relevance over the years. In actual WordPress the administrator is the only one who is seeing update notifications.
- 0
- 2014-08-28
- netblognet
-
- 2010-09-16
从Google CDN加载jQuery
经过以下测试: WordPress 3.0.1
// Even more smart jQuery inclusion :) add_action( 'init', 'jquery_register' ); // Register from Google and for footer function jquery_register() { if ( !is_admin() ) { wp_deregister_script( 'jquery' ); wp_register_script( 'jquery', ( 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js' ), false, null, true ); wp_enqueue_script( 'jquery' ); } }
为了安全性删除WordPress版本信息
经过以下测试: WordPress 3.0.1
// Remove version info from head and feeds function complete_version_removal() { return ''; } add_filter('the_generator', 'complete_version_removal');
添加垃圾邮件和删除指向前端评论的链接
经过以下测试: WordPress 3.0.1
通过添加垃圾邮件和删除链接,可以更轻松地从前端管理评论.**
// Spam & delete links for all versions of WordPress function delete_comment_link($id) { if (current_user_can('edit_post')) { echo '| <a href="'.get_bloginfo('wpurl').'/wp-admin/comment.php?action=cdc&c='.$id.'">del</a> '; echo '| <a href="'.get_bloginfo('wpurl').'/wp-admin/comment.php?action=cdc&dt=spam&c='.$id.'">spam</a>'; } }
将公开发布延迟到RSS Feed
经过以下测试: WordPress 3.0.1
最后,我希望将发布到RSS源的时间延迟10到15分钟,因为我总是在文本中发现至少两个错误.其他用途是在您希望将内容发布给RSS阅读器之前,要在一天内或一周内将其专有于您的网站.
// Delay feed update function publish_later_on_feed($where) { global $wpdb; if (is_feed()) { // Timestamp in WordPress format $now = gmdate('Y-m-d H:i:s'); // Value for wait; + device $wait = '10'; // integer // http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_timestampdiff $device = 'MINUTE'; // MINUTE, HOUR, DAY, WEEK, MONTH, YEAR // Add SQL syntax to default $where $where .= " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') > $wait "; } return $where; } add_filter('posts_where', 'publish_later_on_feed');
Loading jQuery from the Google CDN
Tested on: WordPress 3.0.1
// Even more smart jQuery inclusion :) add_action( 'init', 'jquery_register' ); // Register from Google and for footer function jquery_register() { if ( !is_admin() ) { wp_deregister_script( 'jquery' ); wp_register_script( 'jquery', ( 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js' ), false, null, true ); wp_enqueue_script( 'jquery' ); } }
Remove the WordPress Version Info for Security
Tested on: WordPress 3.0.1
// Remove version info from head and feeds function complete_version_removal() { return ''; } add_filter('the_generator', 'complete_version_removal');
Add Spam & Delete Links to Comments on Front End
Tested on: WordPress 3.0.1
This makes it way easier to manage comments from the front end by adding spam and delete links.**
// Spam & delete links for all versions of WordPress function delete_comment_link($id) { if (current_user_can('edit_post')) { echo '| <a href="'.get_bloginfo('wpurl').'/wp-admin/comment.php?action=cdc&c='.$id.'">del</a> '; echo '| <a href="'.get_bloginfo('wpurl').'/wp-admin/comment.php?action=cdc&dt=spam&c='.$id.'">spam</a>'; } }
Delay the public posting to RSS Feed
Tested on: WordPress 3.0.1
Finally, I like to delay posting to my RSS feeds for 10-15 minutes because I always find at least a couple errors in my text. Other uses are in case you want content to be exclusive to your site for a day or a week before pushing it out to your RSS readers.
// Delay feed update function publish_later_on_feed($where) { global $wpdb; if (is_feed()) { // Timestamp in WordPress format $now = gmdate('Y-m-d H:i:s'); // Value for wait; + device $wait = '10'; // integer // http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_timestampdiff $device = 'MINUTE'; // MINUTE, HOUR, DAY, WEEK, MONTH, YEAR // Add SQL syntax to default $where $where .= " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') > $wait "; } return $where; } add_filter('posts_where', 'publish_later_on_feed');
-
我的帖子上的来源:http://wpengineer.com/320/publish-the-feed-later/以及更多信息source on my post: http://wpengineer.com/320/publish-the-feed-later/ with more informations
- 0
- 2010-09-17
- bueltge
-
您也可以只删除生成器过滤器:`remove_action('wp_head','wp_generator');`You can also just remove the generator filter: `remove_action('wp_head', 'wp_generator');`
- 1
- 2010-09-18
- Gipetto
-
为什么我们也不要使用Google CDN进行管理?我没明白Why dont we use google cdn for admin too? I didnt get it
- 0
- 2010-11-05
- Ünsal Korkmaz
-
@Derek Perkins-您能否使每个代码段都具有不同的答案,以便可以分别对它们进行表决?@Derek Perkins - Can you make each of these code snippets a different answer so they can each be voted on separately?
- 0
- 2010-11-06
- MikeSchinkel
-
http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js会在一个小时后过期.**始终**使用完整版本信息,例如http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js –会在一年后过期.http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js expires after just one hour. **Always** use the full version information like http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js – that expires after one year.
- 25
- 2010-11-10
- fuxia
-
您能否在接下来的几周内将每个Wiki条目拆分为单独的条目.我想为您做这件事,但我不想让我似乎想为您分享的信息加分.Can you please split each of these wiki entries up into separate entries within the next few weeks. I wanted to do it for you but I did not want to make it seem like I am trying to take points for information you shared.
- 0
- 2011-01-26
- NetConstructor.com
-
"删除WordPress版本信息以提高安全性"代码实际上并没有采取任何措施来提高您网站的安全性.它甚至没有停止公开您网站上正在使用的WP版本.The "Remove the WordPress Version Info for Security" code doesn't actually do anything to increase the security of your site. It doesn't even stop exposure of the WP version being used on your site.
- 5
- 2011-02-11
- Joseph Scott
-
不是真的,约瑟夫,如果您的WordPress版本已公开,则人们可以查看您是否正在运行旧版本,从而暴露了您的漏洞.从所有WordPress安装中删除它始终是一个好决定.就个人而言,我什至不知道为什么将它们放在第一位,因为这是一个安全问题.Not true Joseph, if your WordPress version is exposed then people can see if you are running an older version, thus exposing your vulnerabilities. It is always a good decision to remove that from all WordPress installs. Personally, I don't even know why they put it there in the first place as it IS a security issue.
- 1
- 2014-05-12
- Jeremy
-
- 2010-09-11
设置最大的修订版本数,以避免数据库过大.
测试于: WordPress 3.0.1
默认值为无穷大,它将设置为仅记住最后五个编辑:
/** * Set the post revisions unless the constant was set in wp-config.php */ if (!defined('WP_POST_REVISIONS')) define('WP_POST_REVISIONS', 5);
对于有价值的东西,可以在Codex页面上设置大量的CONSTANTS好主意编辑wp-config.php .
Set a maximum number of post revisions to avoid DB bloat.
Tested on: WordPress 3.0.1
The default is infinite, and this will set it to only remember the last five edits:
/** * Set the post revisions unless the constant was set in wp-config.php */ if (!defined('WP_POST_REVISIONS')) define('WP_POST_REVISIONS', 5);
For what it's worth, there are a ton of great ideas for CONSTANTS that can be set on the Codex page Editing wp-config.php.
-
可以基于每个帖子类型设置吗?Can this be set on a per post type basis?
- 0
- 2010-09-12
- NetConstructor.com
-
在wp_save_post_revision()中查看它的用法,似乎没有一种方法可以根据帖子类型进行区分.值上没有过滤器或任何内容,尽管可能应该有.Looking at its usage in wp_save_post_revision() there doesn't seem to be a way to distinguish based on post types. There's no filter or anything on the value, though there probably should be.
- 0
- 2010-09-12
- jerclarke
-
感谢Jeremy-对于其他人,如果您知道如何执行此操作,请在此处发布.thanks Jeremy - To anyone else, if you know how to do this please post it here.
- 0
- 2010-09-14
- NetConstructor.com
-
我个人更喜欢10.我知道它是双精度的,但是当我需要修订时,它总是比5大.personally I prefer 10. I know it's double but always when I need a revision it's always older then 5
- 1
- 2012-09-04
- janw
-
- 2011-12-04
锐化调整大小的图像(仅JPEG)
此功能可锐化调整大小的JPEG图像.差异示例:
>
function ajx_sharpen_resized_files( $resized_file ) { $image = wp_load_image( $resized_file ); if ( !is_resource( $image ) ) return new WP_Error( 'error_loading_image', $image, $file ); $size = @getimagesize( $resized_file ); if ( !$size ) return new WP_Error('invalid_image', __('Could not read image size'), $file); list($orig_w, $orig_h, $orig_type) = $size; switch ( $orig_type ) { case IMAGETYPE_JPEG: $matrix = array( array(-1, -1, -1), array(-1, 16, -1), array(-1, -1, -1), ); $divisor = array_sum(array_map('array_sum', $matrix)); $offset = 0; imageconvolution($image, $matrix, $divisor, $offset); imagejpeg($image, $resized_file,apply_filters( 'jpeg_quality', 90, 'edit_image' )); break; case IMAGETYPE_PNG: return $resized_file; case IMAGETYPE_GIF: return $resized_file; } return $resized_file; } add_filter('image_make_intermediate_size', 'ajx_sharpen_resized_files', 900);
Sharpen Resized Images (only JPEG)
This function sharpens resized JPEG images. An example of a difference:
function ajx_sharpen_resized_files( $resized_file ) { $image = wp_load_image( $resized_file ); if ( !is_resource( $image ) ) return new WP_Error( 'error_loading_image', $image, $file ); $size = @getimagesize( $resized_file ); if ( !$size ) return new WP_Error('invalid_image', __('Could not read image size'), $file); list($orig_w, $orig_h, $orig_type) = $size; switch ( $orig_type ) { case IMAGETYPE_JPEG: $matrix = array( array(-1, -1, -1), array(-1, 16, -1), array(-1, -1, -1), ); $divisor = array_sum(array_map('array_sum', $matrix)); $offset = 0; imageconvolution($image, $matrix, $divisor, $offset); imagejpeg($image, $resized_file,apply_filters( 'jpeg_quality', 90, 'edit_image' )); break; case IMAGETYPE_PNG: return $resized_file; case IMAGETYPE_GIF: return $resized_file; } return $resized_file; } add_filter('image_make_intermediate_size', 'ajx_sharpen_resized_files', 900);
-
更好的jpeg,非常感谢!在3.4-alpha中测试much much better jpegs, thanks a bunch! tested in 3.4-alpha
- 0
- 2012-04-02
- brasofilo
-
如果你们想要这个作为插件:http://wordpress.org/extend/plugins/sharpen-resized-images/if u guys want this as plugin: http://wordpress.org/extend/plugins/sharpen-resized-images/
- 2
- 2012-04-03
- Ünsal Korkmaz
-
这个功能去哪儿了?where does this function go?
- 0
- 2019-03-18
- StevieD
-
@StevieD-正如标题所示,它位于模板中的functions.php中.不过,我会小心一点,该功能已有8年历史了.@StevieD - as the title suggests, it goes inside functions.php, in your template. I would be careful though, this function is almost 8 years old.
- 0
- 2019-07-25
- timofey.com
-
- 2010-09-09
删除默认的WordPress Meta Boxs
测试于: WordPress 3.0.1
此代码将允许您删除WordPress默认情况下添加到默认的"添加/编辑帖子"和"添加/编辑页面"屏幕的特定元框.
// REMOVE META BOXES FROM DEFAULT POSTS SCREEN function remove_default_post_screen_metaboxes() { remove_meta_box( 'postcustom','post','normal' ); // Custom Fields Metabox remove_meta_box( 'postexcerpt','post','normal' ); // Excerpt Metabox remove_meta_box( 'commentstatusdiv','post','normal' ); // Comments Metabox remove_meta_box( 'trackbacksdiv','post','normal' ); // Talkback Metabox remove_meta_box( 'slugdiv','post','normal' ); // Slug Metabox remove_meta_box( 'authordiv','post','normal' ); // Author Metabox } add_action('admin_menu', 'remove_default_post_screen_metaboxes'); // REMOVE META BOXES FROM DEFAULT PAGES SCREEN function remove_default_page_screen_metaboxes() { remove_meta_box( 'postcustom','page','normal' ); // Custom Fields Metabox remove_meta_box( 'postexcerpt','page','normal' ); // Excerpt Metabox remove_meta_box( 'commentstatusdiv','page','normal' ); // Comments Metabox remove_meta_box( 'trackbacksdiv','page','normal' ); // Talkback Metabox remove_meta_box( 'slugdiv','page','normal' ); // Slug Metabox remove_meta_box( 'authordiv','page','normal' ); // Author Metabox } add_action('admin_menu', 'remove_default_page_screen_metaboxes');
Remove Default WordPress Meta Boxes
Tested on: WordPress 3.0.1
This code will allow you to remove specific Meta Boxes which WordPress adds by default to the default Add/Edit Post and Add/Edit Page screens.
// REMOVE META BOXES FROM DEFAULT POSTS SCREEN function remove_default_post_screen_metaboxes() { remove_meta_box( 'postcustom','post','normal' ); // Custom Fields Metabox remove_meta_box( 'postexcerpt','post','normal' ); // Excerpt Metabox remove_meta_box( 'commentstatusdiv','post','normal' ); // Comments Metabox remove_meta_box( 'trackbacksdiv','post','normal' ); // Talkback Metabox remove_meta_box( 'slugdiv','post','normal' ); // Slug Metabox remove_meta_box( 'authordiv','post','normal' ); // Author Metabox } add_action('admin_menu', 'remove_default_post_screen_metaboxes'); // REMOVE META BOXES FROM DEFAULT PAGES SCREEN function remove_default_page_screen_metaboxes() { remove_meta_box( 'postcustom','page','normal' ); // Custom Fields Metabox remove_meta_box( 'postexcerpt','page','normal' ); // Excerpt Metabox remove_meta_box( 'commentstatusdiv','page','normal' ); // Comments Metabox remove_meta_box( 'trackbacksdiv','page','normal' ); // Talkback Metabox remove_meta_box( 'slugdiv','page','normal' ); // Slug Metabox remove_meta_box( 'authordiv','page','normal' ); // Author Metabox } add_action('admin_menu', 'remove_default_page_screen_metaboxes');
-
根据这个http://wordpress.stackexchange.com/questions/34030/cant-change-permalink-url-after-hitting-ok-and-update/37779#37779我不会以这种方式隐藏slugdiv,而是使用这个https://gist.github.com/1863830代替According to this http://wordpress.stackexchange.com/questions/34030/cant-change-permalink-url-after-hitting-ok-and-update/37779#37779 I wouldn't hide the slugdiv this way, but use this https://gist.github.com/1863830 instead
-
@CorvanNoorloos您的github链接已损坏.@CorvanNoorloos Your github link is broken.
- 0
- 2017-02-26
- user7003859
-
- 2010-09-15
删除" WordPress"到" WordPress"过滤器
测试于: WordPress 3.0.1
在WordPress 3.0版中添加了一个过滤器,该过滤器会自动转换所有" WordPress"实例.(无大写字母P)转换为" WordPress";(带有大写字母P)的帖子内容,帖子标题和评论文本.有人认为这是侵入性的,但我只需要不时对WordPress进行大小写错误,并发现该过滤器有些烦人.
// Remove annoying P filter if(function_exists('capital_P_dangit')) { foreach ( array( 'the_content', 'the_title' ) as $filter ) remove_filter( $filter, 'capital_P_dangit', 11 ); remove_filter('comment_text', 'capital_P_dangit', 31 ); }
Remove "Wordpress" to "WordPress" filter
Tested on: WordPress 3.0.1
There was a filter added with WordPress version 3.0 that automatically converts all instances of "Wordpress" (no capital P) to "WordPress" (with a capital P) in post content, post titles, and comment text. Some people see this as intrusive, but I just have a need to mis-case WordPress from time to time and found the filter somewhat annoying.
// Remove annoying P filter if(function_exists('capital_P_dangit')) { foreach ( array( 'the_content', 'the_title' ) as $filter ) remove_filter( $filter, 'capital_P_dangit', 11 ); remove_filter('comment_text', 'capital_P_dangit', 31 ); }
-
很好的发现.其中一件事情就是删除了不需要的另一段代码great little find. One of those things which just removes another piece of code that is not needed
- 0
- 2010-09-17
- NetConstructor.com
-
在WordPress 3.0.1中,[此过滤器的优先级为11](http://core.trac.wordpress.org/changeset/15378/branches/3.0/wp-includes/default-filters.php),因此您需要将`11`作为第三个参数将其删除.In WordPress 3.0.1, [this filter is added with priority 11](http://core.trac.wordpress.org/changeset/15378/branches/3.0/wp-includes/default-filters.php), so you need to add `11` as the third parameter to remove it.
- 5
- 2010-11-05
- Jan Fabry
-
- 2010-10-21
自定义仪表板
add_action('wp_dashboard_setup', 'my_custom_dashboard_widgets'); function my_custom_dashboard_widgets() { global $wp_meta_boxes;
删除这些仪表板小部件...
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']); unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']); unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);
添加一个名为"帮助和支持"的自定义小部件
wp_add_dashboard_widget('custom_help_widget', 'Help and Support', 'custom_dashboard_help'); }
这是您的自定义小部件的内容
function custom_dashboard_help() { echo '<p>Lorum ipsum delor sit amet et nunc</p>'; }
Customize the Dashboard
add_action('wp_dashboard_setup', 'my_custom_dashboard_widgets'); function my_custom_dashboard_widgets() { global $wp_meta_boxes;
Remove these dashboard widgets...
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']); unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']); unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);
Add a custom widget called 'Help and Support'
wp_add_dashboard_widget('custom_help_widget', 'Help and Support', 'custom_dashboard_help'); }
This is the content for your custom widget
function custom_dashboard_help() { echo '<p>Lorum ipsum delor sit amet et nunc</p>'; }
-
- 2010-11-16
添加自定义用户配置文件字段
将下面的代码放入您的functions.php文件中,以添加自定义用户配置文件字段.根据需要编辑或添加行.
记住不要删除该行:返回$ contactmethods;否则,这将无法正常工作.
// CUSTOM USER PROFILE FIELDS function my_custom_userfields( $contactmethods ) { // ADD CONTACT CUSTOM FIELDS $contactmethods['contact_phone_office'] = 'Office Phone'; $contactmethods['contact_phone_mobile'] = 'Mobile Phone'; $contactmethods['contact_office_fax'] = 'Office Fax'; // ADD ADDRESS CUSTOM FIELDS $contactmethods['address_line_1'] = 'Address Line 1'; $contactmethods['address_line_2'] = 'Address Line 2 (optional)'; $contactmethods['address_city'] = 'City'; $contactmethods['address_state'] = 'State'; $contactmethods['address_zipcode'] = 'Zipcode'; return $contactmethods; } add_filter('user_contactmethods','my_custom_userfields',10,1);
要显示自定义字段,可以使用下面列出的两种方法之一.
选项1:
the_author_meta('facebook', $current_author->ID)
选项2:
<?php $current_author = get_userdata(get_query_var('author')); ?> <p><a href="<?php echo esc_url($current_author->contact_phone_office);?>" title="office_phone"> Office Phone</a></p>
Add Custom User Profile Fields
Place the code below into your functions.php file to add custom user profile fields. Edit or add lines as you see fit.
Remember not to remove the line: return $contactmethods; otherwise this won't work.
// CUSTOM USER PROFILE FIELDS function my_custom_userfields( $contactmethods ) { // ADD CONTACT CUSTOM FIELDS $contactmethods['contact_phone_office'] = 'Office Phone'; $contactmethods['contact_phone_mobile'] = 'Mobile Phone'; $contactmethods['contact_office_fax'] = 'Office Fax'; // ADD ADDRESS CUSTOM FIELDS $contactmethods['address_line_1'] = 'Address Line 1'; $contactmethods['address_line_2'] = 'Address Line 2 (optional)'; $contactmethods['address_city'] = 'City'; $contactmethods['address_state'] = 'State'; $contactmethods['address_zipcode'] = 'Zipcode'; return $contactmethods; } add_filter('user_contactmethods','my_custom_userfields',10,1);
To display custom fields you can use one of the two methods listed below.
Option 1:
the_author_meta('facebook', $current_author->ID)
Option 2:
<?php $current_author = get_userdata(get_query_var('author')); ?> <p><a href="<?php echo esc_url($current_author->contact_phone_office);?>" title="office_phone"> Office Phone</a></p>
-
- 2010-09-09
自定义管理菜单的顺序
经过以下测试: WordPress 3.0.1
此代码将使您可以重新组织管理菜单中元素的顺序.您需要做的就是单击管理菜单中的现有链接,然后复制/wp-admin/URL之前的所有内容.下面的顺序代表新管理菜单的顺序.
// CUSTOMIZE ADMIN MENU ORDER function custom_menu_order($menu_ord) { if (!$menu_ord) return true; return array( 'index.php', // This represents the dashboard link 'edit.php?post_type=events', // This is a custom post type menu 'edit.php?post_type=news', 'edit.php?post_type=articles', 'edit.php?post_type=faqs', 'edit.php?post_type=mentors', 'edit.php?post_type=testimonials', 'edit.php?post_type=services', 'edit.php?post_type=page', // This is the default page menu 'edit.php', // This is the default POST admin menu ); } add_filter('custom_menu_order', 'custom_menu_order'); add_filter('menu_order', 'custom_menu_order');
Customize the order of the administration menu
Tested on: WordPress 3.0.1
This code will allow you to reorganize the order of elements in the administration menu. All that you need to do is click on an existing link in the administration menu and copy everything before the /wp-admin/ URL. The order below represents the order the new administration menu will have.
// CUSTOMIZE ADMIN MENU ORDER function custom_menu_order($menu_ord) { if (!$menu_ord) return true; return array( 'index.php', // This represents the dashboard link 'edit.php?post_type=events', // This is a custom post type menu 'edit.php?post_type=news', 'edit.php?post_type=articles', 'edit.php?post_type=faqs', 'edit.php?post_type=mentors', 'edit.php?post_type=testimonials', 'edit.php?post_type=services', 'edit.php?post_type=page', // This is the default page menu 'edit.php', // This is the default POST admin menu ); } add_filter('custom_menu_order', 'custom_menu_order'); add_filter('menu_order', 'custom_menu_order');
-
是否真的有一个名为`custom_menu_order`的核心过滤器?我找不到一个...Is there really a core filter named `custom_menu_order`? I couldn't find one...
- 0
- 2011-03-01
- kaiser
-
@kaiser记录在这里http://codex.wordpress.org/Plugin_API/Filter_Reference/custom_menu_order@kaiser documented here http://codex.wordpress.org/Plugin_API/Filter_Reference/custom_menu_order
- 4
- 2012-08-18
- Manny Fleurmond
-
- 2010-09-12
更改练习长度的功能
测试于: Wordpress 3.0.1
默认情况下,所有摘录的上限为55个字.使用下面的代码,您可以覆盖此默认设置:
function new_excerpt_length($length) { return 100; } add_filter('excerpt_length', 'new_excerpt_length');
此示例将摘录长度更改为100个字,但是您可以使用相同的方法将其更改为任何值.
Function to change the length of Exerpt
Tested on: Wordpress 3.0.1
By default all excerpts are capped at 55 words. Utilizing the code below you can override this default settings:
function new_excerpt_length($length) { return 100; } add_filter('excerpt_length', 'new_excerpt_length');
This example changes the excerpt length to 100 words, but you can use the same method to change it to any value.
-
@ user402 ...是否用文字或字符限制?您可以同时发布两者吗?@user402... does this cap by words or characters? Could you post how to do both?
- 0
- 2010-09-12
- NetConstructor.com
-
*@NetConstructor.com*此功能(和`excerpt_length`挂钩)[逐字顶](http://codex.wordpress.org/Plugin_API/Filter_Reference/excerpt_length).*@NetConstructor.com* This function (and the `excerpt_length` hook) [cap by words](http://codex.wordpress.org/Plugin_API/Filter_Reference/excerpt_length).
- 3
- 2010-09-15
- EAMann
-
嘿.我将过滤器添加到核心.:)Heh. I got that filter added to core. :)
- 0
- 2011-03-08
- Dougal Campbell
-
- 2010-12-28
在"管理帖子/页面"列表中添加缩略图
您可以将其添加到功能中以显示在"管理/编辑帖子和页面"中,并在缩略图预览中列出新列.
/****** Add Thumbnails in Manage Posts/Pages List ******/ if ( !function_exists('AddThumbColumn') && function_exists('add_theme_support') ) { // for post and page add_theme_support('post-thumbnails', array( 'post', 'page' ) ); function AddThumbColumn($cols) { $cols['thumbnail'] = __('Thumbnail'); return $cols; } function AddThumbValue($column_name, $post_id) { $width = (int) 35; $height = (int) 35; if ( 'thumbnail' == $column_name ) { // thumbnail of WP 2.9 $thumbnail_id = get_post_meta( $post_id, '_thumbnail_id', true ); // image from gallery $attachments = get_children( array('post_parent' => $post_id, 'post_type' => 'attachment', 'post_mime_type' => 'image') ); if ($thumbnail_id) $thumb = wp_get_attachment_image( $thumbnail_id, array($width, $height), true ); elseif ($attachments) { foreach ( $attachments as $attachment_id => $attachment ) { $thumb = wp_get_attachment_image( $attachment_id, array($width, $height), true ); } } if ( isset($thumb) && $thumb ) { echo $thumb; } else { echo __('None'); } } } // for posts add_filter( 'manage_posts_columns', 'AddThumbColumn' ); add_action( 'manage_posts_custom_column', 'AddThumbValue', 10, 2 ); // for pages add_filter( 'manage_pages_columns', 'AddThumbColumn' ); add_action( 'manage_pages_custom_column', 'AddThumbValue', 10, 2 ); }
Add Thumbnails in Manage Posts/Pages List
You can add this to your functions to display to the Manage/Edit Post and Pages List a new column with the thumbnail preview.
/****** Add Thumbnails in Manage Posts/Pages List ******/ if ( !function_exists('AddThumbColumn') && function_exists('add_theme_support') ) { // for post and page add_theme_support('post-thumbnails', array( 'post', 'page' ) ); function AddThumbColumn($cols) { $cols['thumbnail'] = __('Thumbnail'); return $cols; } function AddThumbValue($column_name, $post_id) { $width = (int) 35; $height = (int) 35; if ( 'thumbnail' == $column_name ) { // thumbnail of WP 2.9 $thumbnail_id = get_post_meta( $post_id, '_thumbnail_id', true ); // image from gallery $attachments = get_children( array('post_parent' => $post_id, 'post_type' => 'attachment', 'post_mime_type' => 'image') ); if ($thumbnail_id) $thumb = wp_get_attachment_image( $thumbnail_id, array($width, $height), true ); elseif ($attachments) { foreach ( $attachments as $attachment_id => $attachment ) { $thumb = wp_get_attachment_image( $attachment_id, array($width, $height), true ); } } if ( isset($thumb) && $thumb ) { echo $thumb; } else { echo __('None'); } } } // for posts add_filter( 'manage_posts_columns', 'AddThumbColumn' ); add_action( 'manage_posts_custom_column', 'AddThumbValue', 10, 2 ); // for pages add_filter( 'manage_pages_columns', 'AddThumbColumn' ); add_action( 'manage_pages_custom_column', 'AddThumbValue', 10, 2 ); }
-
如何将列移到最左边?How to move the column to the far left?
- 0
- 2013-10-08
- Rich
-
- 2010-09-15
将ping删除到您自己的博客中
测试于: WordPress 3.0.1
// Remove pings to self function no_self_ping( &$links ) { $home = get_option( 'home' ); foreach ( $links as $l => $link ) if ( 0 === strpos( $link, $home ) ) unset($links[$l]); } add_action( 'pre_ping', 'no_self_ping' );
Remove pings to your own blog
Tested on: WordPress 3.0.1
// Remove pings to self function no_self_ping( &$links ) { $home = get_option( 'home' ); foreach ( $links as $l => $link ) if ( 0 === strpos( $link, $home ) ) unset($links[$l]); } add_action( 'pre_ping', 'no_self_ping' );
-
wordpress会多久检查一次自己?how often and when does wordpress ping itself?
- 0
- 2010-09-17
- NetConstructor.com
-
实际上,我经常遇到这个问题.如果我在WP博客上引用了指向另一篇文章的内部链接,则我会收到引用或pingback(不记得是哪个引用).这很烦人.I actually have that issue quite often. If I reference an internal link to another post on my WP blog, I get a trackback or pingback (don't remember which) from myself. It's annoying.
- 0
- 2010-12-18
- Sahas Katta
-
同样在这里.我有一个新闻/杂志博客,并经常链接到其他文章.Same here. I have a news / magazine blog and link to other articles quite often.
- 0
- 2011-02-13
- Steven
-
- 2010-12-23
启用GZIP输出压缩
通常应将服务器设置为自动执行此操作,但是许多共享主机不执行此操作(可能会增加客户端带宽使用率).
if(extension_loaded("zlib") && (ini_get("output_handler") != "ob_gzhandler")) add_action('wp', create_function('', '@ob_end_clean();@ini_set("zlib.output_compression", 1);'));
Enable GZIP output compression
Normally the server should be set up to do this automatically, but a lot of shared hosts don’t do this (probably to increase client bandwidth usage).
if(extension_loaded("zlib") && (ini_get("output_handler") != "ob_gzhandler")) add_action('wp', create_function('', '@ob_end_clean();@ini_set("zlib.output_compression", 1);'));
-
- 2010-09-15
显示数据库查询,花费的时间和内存消耗
测试于: WordPress 3.0.1
function performance( $visible = false ) { $stat = sprintf( '%d queries in %.3f seconds, using %.2fMB memory', get_num_queries(), timer_stop( 0, 3 ), memory_get_peak_usage() / 1024 / 1024 ); echo $visible ? $stat : "<!-- {$stat} -->" ; }
然后在上面代码下面的代码将自动将上面代码插入公共网站的页脚(确保您的主题正在调用
wp_footer
):add_action( 'wp_footer', 'performance', 20 );
可以多次调用.
Display DB Queries, Time Spent and Memory Consumption
Tested on: WordPress 3.0.1
function performance( $visible = false ) { $stat = sprintf( '%d queries in %.3f seconds, using %.2fMB memory', get_num_queries(), timer_stop( 0, 3 ), memory_get_peak_usage() / 1024 / 1024 ); echo $visible ? $stat : "<!-- {$stat} -->" ; }
Then this code below the code above which will automatically insert the code above into the footer of your public website (make sure your theme is calling
wp_footer
):add_action( 'wp_footer', 'performance', 20 );
It can be called multiple times.
-
对于PHP <5.2使用`memory_get_usage()`for php < 5.2 use `memory_get_usage()`
- 0
- 2011-01-23
- onetrickpony
-
- 2010-11-14
取消注册WordPress默认小部件
测试于: WordPress 3.0.1
// Unregister all default WordPress Widgets function unregister_default_wp_widgets() { unregister_widget('WP_Widget_Pages'); unregister_widget('WP_Widget_Calendar'); unregister_widget('WP_Widget_Archives'); unregister_widget('WP_Widget_Links'); unregister_widget('WP_Widget_Meta'); unregister_widget('WP_Widget_Search'); unregister_widget('WP_Widget_Text'); unregister_widget('WP_Widget_Categories'); unregister_widget('WP_Widget_Recent_Posts'); unregister_widget('WP_Widget_Recent_Comments'); unregister_widget('WP_Widget_RSS'); unregister_widget('WP_Widget_Tag_Cloud'); } add_action('widgets_init', 'unregister_default_wp_widgets', 1);
Unregister WordPress Default Widgets
Tested on: WordPress 3.0.1
// Unregister all default WordPress Widgets function unregister_default_wp_widgets() { unregister_widget('WP_Widget_Pages'); unregister_widget('WP_Widget_Calendar'); unregister_widget('WP_Widget_Archives'); unregister_widget('WP_Widget_Links'); unregister_widget('WP_Widget_Meta'); unregister_widget('WP_Widget_Search'); unregister_widget('WP_Widget_Text'); unregister_widget('WP_Widget_Categories'); unregister_widget('WP_Widget_Recent_Posts'); unregister_widget('WP_Widget_Recent_Comments'); unregister_widget('WP_Widget_RSS'); unregister_widget('WP_Widget_Tag_Cloud'); } add_action('widgets_init', 'unregister_default_wp_widgets', 1);
-
我在版本3.1.4上使用过它.但是小部件仍然存在.有人有主意吗?I have used it on Version 3.1.4 . But the widgets are still there. Does any one have idea?
- 0
- 2011-07-01
- user391
-
仍适用于WP 4.5 :)Still works on WP 4.5 :)
- 0
- 2016-04-19
- Tim Malone
-
- 2010-09-10
自动从帖子内容中提取第一张图片
测试于: WordPress 3.0.1
此代码将自动提取与帖子关联的第一张图像,并允许您通过调用getImage函数来显示/使用它.
// AUTOMATICALLY EXTRACT THE FIRST IMAGE FROM THE POST function getImage($num) { global $more; $more = 1; $link = get_permalink(); $content = get_the_content(); $count = substr_count($content, '<img'); $start = 0; for($i=1;$i<=$count;$i++) { $imgBeg = strpos($content, '<img', $start); $post = substr($content, $imgBeg); $imgEnd = strpos($post, '>'); $postOutput = substr($post, 0, $imgEnd+1); $postOutput = preg_replace('/width="([0-9]*)" height="([0-9]*)"/', '',$postOutput);; $image[$i] = $postOutput; $start=$imgEnd+1; } if(stristr($image[$num],'<img')) { echo '<a href="'.$link.'">'.$image[$num]."</a>"; } $more = 0; }
Auto Extract the First Image from the Post Content
Tested on: WordPress 3.0.1
This code will automatically extract the first image associated with a post and allow you to display/use it by calling the getImage function.
// AUTOMATICALLY EXTRACT THE FIRST IMAGE FROM THE POST function getImage($num) { global $more; $more = 1; $link = get_permalink(); $content = get_the_content(); $count = substr_count($content, '<img'); $start = 0; for($i=1;$i<=$count;$i++) { $imgBeg = strpos($content, '<img', $start); $post = substr($content, $imgBeg); $imgEnd = strpos($post, '>'); $postOutput = substr($post, 0, $imgEnd+1); $postOutput = preg_replace('/width="([0-9]*)" height="([0-9]*)"/', '',$postOutput);; $image[$i] = $postOutput; $start=$imgEnd+1; } if(stristr($image[$num],'<img')) { echo '<a href="'.$link.'">'.$image[$num]."</a>"; } $more = 0; }
-
很好,但是get_the_image对此也做得很好.http://wordpress.org/extend/plugins/get-the-image/Nice, but get_the_image does a very good job with this as well. http://wordpress.org/extend/plugins/get-the-image/
- 6
- 2010-09-15
- artlung
-
正确,但是此方法的工作方式不同,并修复了get_the_image未考虑的各种问题correct but this one works differently and fixes various issues which get_the_image does not take into account
- 0
- 2010-09-30
- NetConstructor.com
-
它与get_the_image脚本有什么不同?What does it do differently than the get_the_image script?
- 3
- 2010-12-05
- matt
-
@matt-在wordpress中,可以通过多种方式将图像添加到帖子中,我认为get_the_image脚本只是其中一种.这会检查是否有特色图片,如果有的话先使用该图片,然后我认为它会检查添加到帖子内容中的第一张图片,如果找不到,则会检查媒体库中排序最高的图片订单(至少这就是我记得订单进行的方式).@matt -- In wordpress there are different ways that images can be added to posts and i think the get_the_image script just looks at one of those. This checks to see if there is a featured image and uses that one first if available, next I think it checks for the first image added to the post content and if that is not found it checks the media gallery for the image with the highest sort order (at least thats how I remember the order going).
- 1
- 2011-02-22
- NetConstructor.com
-
我建议http://wordpress.org/extend/plugins/auto-post-thumbnail/仅在未设置"发布缩略图"的情况下,才根据帖子或任何自定义帖子类型中的第一张图片自动生成"发布缩略图"(功能缩略图)i suggest http://wordpress.org/extend/plugins/auto-post-thumbnail/ Automatically generate the Post Thumbnail (Featured Thumbnail) from the first image in post or any custom post type only if Post Thumbnail is not set
- 0
- 2011-05-08
- Ünsal Korkmaz
-
我不检查缩略图-您确定吗?i dont any check for thumbnail - are you sure?
- 0
- 2012-02-21
- Sagive SEO
-
- 2010-11-14
仅针对不活动的插件删除插件更新通知
function update_active_plugins($value = '') { /* The $value array passed in contains the list of plugins with time marks when the last time the groups was checked for version match The $value->reponse node contains an array of the items that are out of date. This response node is use by the 'Plugins' menu for example to indicate there are updates. Also on the actual plugins listing to provide the yellow box below a given plugin to indicate action is needed by the user. */ if ((isset($value->response)) && (count($value->response))) { // Get the list cut current active plugins $active_plugins = get_option('active_plugins'); if ($active_plugins) { // Here we start to compare the $value->response // items checking each against the active plugins list. foreach($value->response as $plugin_idx => $plugin_item) { // If the response item is not an active plugin then remove it. // This will prevent WordPress from indicating the plugin needs update actions. if (!in_array($plugin_idx, $active_plugins)) unset($value->response[$plugin_idx]); } } else { // If no active plugins then ignore the inactive out of date ones. foreach($value->response as $plugin_idx => $plugin_item) { unset($value->response); } } } return $value; } add_filter('transient_update_plugins', 'update_active_plugins'); // Hook for 2.8.+ //add_filter( 'option_update_plugins', 'update_active_plugins'); // Hook for 2.7.x
Remove Plugin Update Notice ONLY for INACTIVE plugins
function update_active_plugins($value = '') { /* The $value array passed in contains the list of plugins with time marks when the last time the groups was checked for version match The $value->reponse node contains an array of the items that are out of date. This response node is use by the 'Plugins' menu for example to indicate there are updates. Also on the actual plugins listing to provide the yellow box below a given plugin to indicate action is needed by the user. */ if ((isset($value->response)) && (count($value->response))) { // Get the list cut current active plugins $active_plugins = get_option('active_plugins'); if ($active_plugins) { // Here we start to compare the $value->response // items checking each against the active plugins list. foreach($value->response as $plugin_idx => $plugin_item) { // If the response item is not an active plugin then remove it. // This will prevent WordPress from indicating the plugin needs update actions. if (!in_array($plugin_idx, $active_plugins)) unset($value->response[$plugin_idx]); } } else { // If no active plugins then ignore the inactive out of date ones. foreach($value->response as $plugin_idx => $plugin_item) { unset($value->response); } } } return $value; } add_filter('transient_update_plugins', 'update_active_plugins'); // Hook for 2.8.+ //add_filter( 'option_update_plugins', 'update_active_plugins'); // Hook for 2.7.x
-
这不一定是一个好主意-文件系统中仍然存在不活动的插件,仍然可以利用不安全的插件来入侵该网站.插件应始终保持最新.This is not necessarily a good idea - an inactive plugin is still present in the filesystem, and an insecure one can still be utilised to hack the site. Plugins should always be kept up-to-date.
- 1
- 2016-04-11
- Tim Malone
-
- 2010-11-09
删除
<head>
标记内的多余信息和HTML// remove unnecessary header info add_action( 'init', 'remove_header_info' ); function remove_header_info() { remove_action( 'wp_head', 'rsd_link' ); remove_action( 'wp_head', 'wlwmanifest_link' ); remove_action( 'wp_head', 'wp_generator' ); remove_action( 'wp_head', 'start_post_rel_link' ); remove_action( 'wp_head', 'index_rel_link' ); remove_action( 'wp_head', 'adjacent_posts_rel_link' ); // for WordPress < 3.0 remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head' ); // for WordPress >= 3.0 } // remove extra CSS that 'Recent Comments' widget injects add_action( 'widgets_init', 'remove_recent_comments_style' ); function remove_recent_comments_style() { global $wp_widget_factory; remove_action( 'wp_head', array( $wp_widget_factory->widgets['WP_Widget_Recent_Comments'], 'recent_comments_style' ) ); }
Remove superfluous info and HTML within the
<head>
tag// remove unnecessary header info add_action( 'init', 'remove_header_info' ); function remove_header_info() { remove_action( 'wp_head', 'rsd_link' ); remove_action( 'wp_head', 'wlwmanifest_link' ); remove_action( 'wp_head', 'wp_generator' ); remove_action( 'wp_head', 'start_post_rel_link' ); remove_action( 'wp_head', 'index_rel_link' ); remove_action( 'wp_head', 'adjacent_posts_rel_link' ); // for WordPress < 3.0 remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head' ); // for WordPress >= 3.0 } // remove extra CSS that 'Recent Comments' widget injects add_action( 'widgets_init', 'remove_recent_comments_style' ); function remove_recent_comments_style() { global $wp_widget_factory; remove_action( 'wp_head', array( $wp_widget_factory->widgets['WP_Widget_Recent_Comments'], 'recent_comments_style' ) ); }
-
- 2010-11-13
启用错误调试和日志记录以在实时站点上使用
这是我编写的使用WP_DEBUG常数的一段代码,这些常数通常默认情况下处于禁用状态.好吧,我创建了一种方法,不仅可以启用WP_DEBUG,这样您就可以在没有负面影响的实时站点中使用它,而且我还利用了其他调试常量来强制显示错误并创建日志文件./wp-content目录中的错误和注意事项.
将此代码拖放到wp-config.php文件中(在仅保存备份的情况下),然后可以在站点上任何URL的末尾传递?debug=1、2或3参数.
?debug=1=显示所有错误/通知 ?debug=2=强制显示它们 ?debug=3=在/wp-content dir中创建所有错误的debug.log文件.
/** * Written by Jared Williams - http://new2wp.com * @wp-config.php replace WP_DEBUG constant with this code * Enable WP debugging for usage on a live site * http://core.trac.wordpress.org/browser/trunk/wp-includes/load.php#L230 * Pass the '?debug=#' parameter at the end of any URL on site * * http://example.com/?debug=1, /?debug=2, /?debug=3 */ if ( isset($_GET['debug']) && $_GET['debug'] == '1' ) { // Enable the reporting of notices during development - E_ALL define('WP_DEBUG', true); } elseif ( isset($_GET['debug']) && $_GET['debug'] == '2' ) { // Must be true for WP_DEBUG_DISPLAY to work define('WP_DEBUG', true); // Force the display of errors define('WP_DEBUG_DISPLAY', true); } elseif ( isset($_GET['debug']) && $_GET['debug'] == '3' ) { // Must be true for WP_DEBUG_LOG to work define('WP_DEBUG', true); // Log errors to debug.log in the wp-content directory define('WP_DEBUG_LOG', true); }
如果您有兴趣,我将在我为Comluv撰写的来宾帖子中详细介绍: http://comluv.com/dev/enable现场使用情况的调试和日志记录/
我仍在设法使该密码受密码保护,或者最好以某种方式使其在if(current_user_can('manage_themes')和is_logged_in())上起作用.
但这就是很多棘手的地方.
Enable Error Debugging And Logging To Use On Live Sites
This is a piece of code I wrote to make use of the WP_DEBUG constants that are normally disabled by default. Well, I created a way to not only enable WP_DEBUG so you can use it on a live site with no negative side-effects, but I also made use of the other debugging constants for forcing errors to be displayed, and for creating a log file of the errors and Notices in the /wp-content directory.
Drop this code in your wp-config.php file (AFTER YOU SAVE A BACKUP JUST IN CASE) and then you can pass the ?debug=1, 2, or 3 parameters at the end of any URL on your site.
?debug=1 = shows all errors/notices ?debug=2 = forces them to be displayed ?debug=3 = creates a debug.log file of all errors in /wp-content dir.
/** * Written by Jared Williams - http://new2wp.com * @wp-config.php replace WP_DEBUG constant with this code * Enable WP debugging for usage on a live site * http://core.trac.wordpress.org/browser/trunk/wp-includes/load.php#L230 * Pass the '?debug=#' parameter at the end of any URL on site * * http://example.com/?debug=1, /?debug=2, /?debug=3 */ if ( isset($_GET['debug']) && $_GET['debug'] == '1' ) { // Enable the reporting of notices during development - E_ALL define('WP_DEBUG', true); } elseif ( isset($_GET['debug']) && $_GET['debug'] == '2' ) { // Must be true for WP_DEBUG_DISPLAY to work define('WP_DEBUG', true); // Force the display of errors define('WP_DEBUG_DISPLAY', true); } elseif ( isset($_GET['debug']) && $_GET['debug'] == '3' ) { // Must be true for WP_DEBUG_LOG to work define('WP_DEBUG', true); // Log errors to debug.log in the wp-content directory define('WP_DEBUG_LOG', true); }
I go into more detail on the guest post I wrote for Comluv if you're interested, here: http://comluv.com/dev/enable-debugging-and-logging-for-live-site-usage/
I'm still working on a way to make this either password protected, or preferrably somehow make it work on if (current_user_can('manage_themes') and is_logged_in().
But that's where it gets alot more tricky.
-
我们使用类似于设置实时,暂存和开发数据库连接详细信息的方法.We use something similar to setup live, staging and dev database connection details.
- 0
- 2011-03-07
- Tom
-
- 2010-09-10
自动将动态标题添加到公共页面
测试于: WordPress 3.0.1
使用下面的代码将根据正在公开查看的页面/帖子自动创建动态页面标题.
/* Dynamic Titles **/ // This sets your <title> depending on what page you're on, for better formatting and for SEO // You need to set the variable $longd to some custom text at the beginning of the function function dynamictitles() { $longd = __('Enter your longdescription here.', 'texdomainstring'); if ( is_single() ) { wp_title(''); echo ' | '.get_bloginfo('name'); } else if ( is_page() || is_paged() ) { bloginfo('name'); wp_title('|'); } else if ( is_author() ) { bloginfo('name'); wp_title(' | '.__('Author', 'texdomainstring')); } else if ( is_category() ) { bloginfo('name'); wp_title(' | '.__('Archive for', 'texdomainstring')); } else if ( is_tag() ) { echo get_bloginfo('name').' | '.__('Tag archive for', 'texdomainstring'); wp_title(''); } else if ( is_archive() ) { echo get_bloginfo('name').' | '.__('Archive for', 'texdomainstring'); wp_title(''); } else if ( is_search() ) { echo get_bloginfo('name').' | '.__('Search Results', 'texdomainstring'); } else if ( is_404() ) { echo get_bloginfo('name').' | '.__('404 Error (Page Not Found)', 'texdomainstring'); } else if ( is_home() ) { echo get_bloginfo('name').' | '.get_bloginfo('description'); } else { echo get_bloginfo('name').' | '.($blog_longd); } }
Automatically Add Dynamic Titles to Public Pages
Tested on: WordPress 3.0.1
Utilizing the code below will automatically create dynamic page titles based upon the pages/posts being viewed publicly.
/* Dynamic Titles **/ // This sets your <title> depending on what page you're on, for better formatting and for SEO // You need to set the variable $longd to some custom text at the beginning of the function function dynamictitles() { $longd = __('Enter your longdescription here.', 'texdomainstring'); if ( is_single() ) { wp_title(''); echo ' | '.get_bloginfo('name'); } else if ( is_page() || is_paged() ) { bloginfo('name'); wp_title('|'); } else if ( is_author() ) { bloginfo('name'); wp_title(' | '.__('Author', 'texdomainstring')); } else if ( is_category() ) { bloginfo('name'); wp_title(' | '.__('Archive for', 'texdomainstring')); } else if ( is_tag() ) { echo get_bloginfo('name').' | '.__('Tag archive for', 'texdomainstring'); wp_title(''); } else if ( is_archive() ) { echo get_bloginfo('name').' | '.__('Archive for', 'texdomainstring'); wp_title(''); } else if ( is_search() ) { echo get_bloginfo('name').' | '.__('Search Results', 'texdomainstring'); } else if ( is_404() ) { echo get_bloginfo('name').' | '.__('404 Error (Page Not Found)', 'texdomainstring'); } else if ( is_home() ) { echo get_bloginfo('name').' | '.get_bloginfo('description'); } else { echo get_bloginfo('name').' | '.($blog_longd); } }
-
- 2010-11-09
新角色和功能-只能运行一次!
我很方便使用这些,这是没有插件即可实现的正确方法.它们在选项数据库中设置了一个字段(prefix_user_roles),并且您不需要插件即可设置它们. 有关哪些可用功能及其功能描述的列表,请参见法典页面. 您只需取消注释这些块之一,加载任何页面,然后再次对其进行注释!.在这里,我正在创建一个具有所需功能的角色:
/* Capabilities */ // To add the new role, using 'international' as the short name and // 'International Blogger' as the displayed name in the User list and edit page: /* add_role('international', 'International Blogger', array( 'read' => true, // True allows that capability, False specifically removes it. 'edit_posts' => true, 'delete_posts' => true, 'edit_published_posts' => true, 'publish_posts' => true, 'edit_files' => true, 'import' => true, 'upload_files' => true //last in array needs no comma! )); */ // To remove one outright or remove one of the defaults: /* remove_role('international'); */
有时候,从现有角色中添加/删除而不是删除并重新添加一个角色很方便. 同样,您只需取消注释,重新加载页面,然后再次对其进行注释.这将在角色表中正确存储角色/能力. (这使开发人员可以控制它们,并消除了执行相同操作的笨重插件的开销.)在这里,我正在更改作者角色以删除其已发布的帖子(默认设置),但允许他们进行编辑他们发布的帖子(默认情况下,此角色是不可能的)-使用* add_cap *或* remove_cap *.
/* $edit_role = get_role('author'); $edit_role->add_cap('edit_published_posts'); $edit_role->remove_cap('delete_published_posts'); */
我保留了Codex页面上带有网格的电子表格,用于通过这种方式进行修改的网站,因此我可以记住设置的方式,尽管将注释掉的代码保留在functions.php文件中也可以使用.请不要对这些示例进行注释,否则它将在每次页面加载时写入数据库!
New Roles and Capabilities - Only run once!
I keep these handy, this is the right way to do them without a plugin. They set a single field (prefix_user_roles) in the options database, and you don't need a plugin to set them. Refer to the Codex page for a list of what capabilities are available and descriptions for what they do. You only need to uncomment one of these blocks, load any page and then comment them again! Here I'm creating a role that's got the capabilities I need:
/* Capabilities */ // To add the new role, using 'international' as the short name and // 'International Blogger' as the displayed name in the User list and edit page: /* add_role('international', 'International Blogger', array( 'read' => true, // True allows that capability, False specifically removes it. 'edit_posts' => true, 'delete_posts' => true, 'edit_published_posts' => true, 'publish_posts' => true, 'edit_files' => true, 'import' => true, 'upload_files' => true //last in array needs no comma! )); */ // To remove one outright or remove one of the defaults: /* remove_role('international'); */
It's sometimes handy to add/remove from an existing role rather than removing and re-adding one. Again, you only need to uncomment it, reload a page and then comment it again. This will store the role/capability properly in the options table. (This allows you, the developer to control them and removes the overhead of the bulky plugins that do the same thing.) Here I'm changing the author role to delete their published posts (the default), but allowing them the capability to edit their published posts (which isn't possible for this role by default)-- using *add_cap* or *remove_cap*.
/* $edit_role = get_role('author'); $edit_role->add_cap('edit_published_posts'); $edit_role->remove_cap('delete_published_posts'); */
I keep a spreadsheet with the grid from the Codex page for sites that modify this way, so I can remember how things are set, though leaving the commented out code in your functions.php file will work to. Don't leave these examples uncommented, or it will write to the database with each page load!
-
我上面提到的功能写入选项数据库中的字段.评论和取消评论是要走的路.有一些用于用户角色的插件,但是如果您使用上面提到的功能,则不能使这些功能保持运行状态,并且不需要多次设置它们,也不必根据特定用户是否正在访问某些内容来进行设置.如果需要,请为该用户设置特定的,唯一的角色.并参考法典,如果没有插件,我上面写的所有内容都是100%正确. 对于几乎每种情况,您只需要设置一次用户角色.The functions I mention above write to a field in the options database. Commenting and uncommenting them is the way to go. There are plugins for user roles, but if you use the functions mention above, you cannot leave these functions running, and you DO NOT need to set them more than once, or set them based on if a specific user is accessing something. If you want that, set that user up with a specific, unique role. And refer to the codex, everything I write above is 100% correct if you do it without a plugin. For nearly every case, you only need to set the user roles once.
- 0
- 2011-02-02
- tomcat23
-
@tomcat23:为说明起见,我将其包装在一个函数中,仅当该角色不存在时才添加该角色.另一个注意事项:我认为将角色放置在角色层次结构中的某个位置会更容易,方法是从某些内置角色中获取上限,然后从内置角色中添加/删除功能.如果将它们的瓶盖放在ex之间的某个位置,将使它更清晰,更容易记住.管理员和编辑.-希望您不要介意我编辑了您的答案.如果您这样做,请重新扮演角色.:)@tomcat23: To illustrate, i wrapped it up in a function to only add the role, when it doesn't already exists. Another note: I guess it would be easier to place the role somewhere in the role hierarchy, with retrieving the caps from some built in role and then add/remove the capabilities from the built in role. Would make it more clear and easier to remember if it's caps are placed somewhere between ex. admin and editor. - I hope you don't mind that i edited your answer. If you do, pls role it back. :)
- 0
- 2011-03-01
- kaiser
-
当我离开时,我会坚持我的回答.您的功能错了重点,无法提供与我的文字相同的答案.我也很无礼,您更改我的代码和答案.I stand by my answer as I left it. Your function misses the point and doesn't provide the same answer as my text. I also it's quite rude of you do change my code and answer.
- 0
- 2011-03-11
- tomcat23
-
不仅如此,您的函数也不会执行我的代码.您的函数只保留了一个检查位置,get_role('international',这是不必要的!我使用此代码来移动客户端,该客户端的服务器使用的是php4,因此无法使用他们拥有的角色范围插件一直在使用,仅是php5(并且是唯一需要php5进行安装的插件.)作为开发人员,我看到他们唯一需要它的原因是要设置几个角色并更改某些功能.代码,"我的原始答案在这里"是怎么做的!Not only that, but your function doesn't do the same thing as my code. Your function leaves just one more check in place, get_role('international', that isn't needed! I used this code for moving a client who had a server that was using php4 and therefore couldn't use the role scoper plugin they had been using, which was php5 only. (And was the only plugin that needed php5 for their install.) As a developer, I saw that the only reason they needed it was to set up a couple of roles and change some capabilities. And this code, **my original answer here**, is how to do that!
- 0
- 2011-03-12
- tomcat23
-
您不需要也不需要将其包装在函数中.您只需要它即可正确设置角色和功能.如果您想和他们一起玩,那么可以使用一些很棒的插件(尽管很肿). 如果您了解wordpress中的角色和功能,而不仅仅是在闲逛,也没有编写自己的插件,那么这就是正确的方法.请不要编辑我的代码.我已经回滚了.您的功能包装已成为历史,任何人都可以看到,尽管我不同意您所做的事情.You do not need to, nor should you, wrap this in a function. You just need it to properly set the roles and capabilities. If you want to play around with them, there's some great (though bloated) plugins for that. If you understand the roles and capabilities in wordpress and aren't just poking around with it, and aren't writing your own plugin, then this is how to do it right. Please don't edit my code. I have rolled it back. Your function wrapping is in the history for anyone to see, though I disagree with what you have done.
- 0
- 2011-03-12
- tomcat23
-
为了进一步说明,您**无需**将其包装在函数中或进行管理员检查.** add_role(),remove_role(),add_cap()和remove_cap()就像我在原始答案中所示的那样,不需要一遍又一遍地执行,它们只是在选项表中设置了一个字段,不需要被一遍又一遍地写-这就是为什么函数包装错误的原因.**我知道,您要在after_setup_theme中添加一个动作,但是用该钩子设置角色并不是我的答案.(通常,角色不需要与主题打包在一起.)To clarify further, you **do not need** to wrap this in a function or do admin checks. **add_role(), remove_role(), add_cap() and remove_cap(), as I show in my original answer do not need to be executed over and over -- they just set a field in the options table that does not need to be written to over and over again -- which is why your function wrapper is wrong.** I know, you are adding an action to after_setup_theme, but setting a role with that hook is not what my answer was about. (And generally roles don't need to come packaged with themes.)
- 0
- 2011-03-12
- tomcat23
-
Puh ...正如我写道:"希望您不要介意我编辑了您的答案.如果您这样做了,请把它放回去.:)".您将其归还,解释了原因并猜测了什么:可以.冷静点但是要提供相同的解释:我总是将内容包装在函数中,并将其添加到主题的测试文件文件夹中.这样,我可以轻松地测试前的东西.WA回答并在需要时快速添加它们,因此可以将其包装在函数中.而且,更容易禁用(仅调用add_action)并允许使用/**/而不是多行//注释的文档注释.关于我的"为什么".Puh... As i wrote: "I hope you don't mind that i edited your answer. If you do, pls role it back. :)". You roled it back, explained your reason and guess what: It's ok. So calm down. But to offer you the same amount of explanation: I always wrap stuff in functions and add it to my test files folder of my theme. This way i can easily test stuff for ex. WA answers and add them quickly if i need anything, so wrapping it in a function is ok. Further more it's easier to disable (only the add_action call) and allow doc-comments with /**/ instead of multiline // comments. That much about my "why".
- 0
- 2011-03-12
- kaiser
-
@tomcat23-请注意,我们是一个互相支持的社区,而不是一个互相挑战的社区,除非是在学术上这样做.从@kaiser的回复中可以看出,他只是在尝试提供帮助.@tomcat23 - Note that we are a community that is supportive of each other, not one that challenges each other except to do so academically. As you see from @kaiser's response, he was just trying to help.
- 0
- 2011-03-12
- MikeSchinkel
-
@MikeSchinkel我记得@kaiser在2月1日发表了两条评论,这就是为什么我回答然后做的原因.(您是主持人,您能看到他是否这样做吗?因为我认为他对我的用法有2条评论并不对劲,所以我认为我没有错.)我不认为我的代码或解释需要帮助并于2月1日告诉他.一段时间后,我回来了,发现他更改了我的代码,这是我第一次接触该站点的" Wiki"方面,我认为,当我的文字和评论讨论一件事时,代码本身就很生气.不一样@MikeSchinkel I recall there being two comments by @kaiser on Feb 1, which is why I responded then how I did. (You are moderator, can you see if he did? Because I don't think I'm wrong in thinking he had 2 comments about my usage just not sitting well with him.) I did not feel that my code or explanation needed help and told him so on Feb 1st. I come back some time later and find that he's changed my code -- my first exposure to this site's "wiki" aspect -- and I was, in my opinion, justifiably annoyed that while my text and comments discuss one thing, the code itself was different.
- 0
- 2011-03-13
- tomcat23
-
我的回答是本着原始问题的精神.这是_my_有用的代码,这对我来说很有效,我不将其包装在函数中.如果@kaiser想要用包装在函数中并附加到钩子上的代码来回答这个问题,他仍然可以这样做. 同样,@ kaiser在更改我的代码时所做的操作,但对我的文本不起作用,这对其他会来这里的人有害,看到它并发现我对代码的讨论没有任何意义.这就是为什么我觉得做你所做的事是无礼的,也是为什么我昨天像我一样严厉地回应.My answer is in the spirit of the original question. This is _my_ useful code, this is what works well for me and I don't use it wrapped in a function. If @kaiser had wanted to answer this question with the code wrapped in a function and attached to a hook, he's still free to do so. Again, @kaiser what you did in changing my code but not my text was detrimental to other people who would come here, see it and find that my discussion of the code made no sense. That is why I feel it is rude of you to do what you did and why I responded yesterday as harshly as I did.
- 0
- 2011-03-13
- tomcat23
-
@tomcat23-此时在桥下的水.我只想说,我对责备不感兴趣,只是对每个前进的人都感到和平.:)@tomcat23 - Water under the bridge at this point. All I'm saying is, I'm not interested in placing blame, just in having peace for everyone moving forward. :)
- 1
- 2011-03-13
- MikeSchinkel
-
@MikeSchinkel是的,您是对的. @kaiser我很抱歉,如果我造成了您的侮辱.@MikeSchinkel Yes, you are right. @kaiser My apologies if I've caused you insult.
- 2
- 2011-03-13
- tomcat23
-
@MikeSchinkel:感谢您恢复和平.@tomcat23:不,您没有.我可以应对这种批评.我也道歉.@MikeSchinkel: thanks for bringing peace back in. @tomcat23: No, you didn't. I can deal with that sort of criticism. My apologies too.
- 1
- 2011-03-13
- kaiser
-
- 2010-11-14
在小部件中启用简码
小部件中的// shortcode in widgets if ( !is_admin() ){ add_filter('widget_text', 'do_shortcode', 11); }
Enable shortcodes in widgets
// shortcode in widgets if ( !is_admin() ){ add_filter('widget_text', 'do_shortcode', 11); }
-
- 2010-12-28
Wordpress自定义管理员页脚
//自定义管理员页脚文本 函数custom_admin_footer(){ echo'在此处添加您的自定义页脚文本和html'; } add_filter('admin_footer_text','custom_admin_footer');
我将其用于客户网站,作为与开发人员联系的简单参考.
Wordpress Custom Admin Footer
// customize admin footer text function custom_admin_footer() { echo 'add your custom footer text and html here'; } add_filter('admin_footer_text', 'custom_admin_footer');
I use this for client sites as a simple point of reference to contact me as the dev.
-
- 2010-09-12
禁用RSS源的功能
测试于: Wordpress 3.0.1
如果要将基于Wordpress的网站保持为静态,则可以禁用RSSfeed.
您可以使用此功能:
function fb_disable_feed() { wp_die( __('No feed available,please visit our <a href="'. get_bloginfo('url') .'">homepage</a>!') ); } add_action('do_feed', 'fb_disable_feed', 1); add_action('do_feed_rdf', 'fb_disable_feed', 1); add_action('do_feed_rss', 'fb_disable_feed', 1); add_action('do_feed_rss2', 'fb_disable_feed', 1); add_action('do_feed_atom', 'fb_disable_feed', 1);
Function to Disable RSS Feeds
Tested on: Wordpress 3.0.1
You can disable RSS feeds If you want to maintain your Wordpress based website as static.
You can Use this function :
function fb_disable_feed() { wp_die( __('No feed available,please visit our <a href="'. get_bloginfo('url') .'">homepage</a>!') ); } add_action('do_feed', 'fb_disable_feed', 1); add_action('do_feed_rdf', 'fb_disable_feed', 1); add_action('do_feed_rss', 'fb_disable_feed', 1); add_action('do_feed_rss2', 'fb_disable_feed', 1); add_action('do_feed_atom', 'fb_disable_feed', 1);
-
资料来源:http://bueltge.de/wordpress-feeds-deaktivieren/794/(弗兰克·贝尔特(Frank Bueltge))Source: http://bueltge.de/wordpress-feeds-deaktivieren/794/ (Frank Bueltge)
- 0
- 2010-09-16
- fuxia
-
感谢Toscho! 该资源也可以用英语http://wpengineer.com/287/disable-wordpress-feed/Thanks Toscho! the source is also available in english http://wpengineer.com/287/disable-wordpress-feed/
- 0
- 2010-09-17
- bueltge
-
- 2010-12-28
将" Howdy"消息更改为" Welcome"
使用此功能,您可以自定义管理区域右上角的" Howdy"消息.
此功能利用JQuery将" Howdy"消息更改为" Welcome"./****** Customize admin message "Howdy" to "Welcome" ******/ $nohowdy = "Welcome"; if (is_admin()) { add_action('init', 'artdev_nohowdy_h'); add_action('admin_footer', 'artdev_nohowdy_f'); } // Load jQuery function artdev_nohowdy_h() { wp_enqueue_script('jquery'); } // Modify function artdev_nohowdy_f() { global $nohowdy; echo <<<JS <script type="text/javascript"> //<![CDATA[ var nohowdy = "$nohowdy"; jQuery('#user_info p') .html( jQuery('#user_info p') .html() .replace(/Howdy/,nohowdy) ); //]]> JS; }
PHP版本,使用
gettext
过滤器:add_filter('gettext', 'change_howdy', 10, 3); function change_howdy($translated, $text, $domain) { if (!is_admin() || 'default' != $domain) return $translated; if (false !== strpos($translated, 'Howdy')) return str_replace('Howdy', 'Welcome', $translated); return $translated; }
Change the "Howdy" message to "Welcome"
With this function you can customize the "Howdy" message in top right of your admin area.
This function make use of JQuery to change the "Howdy" message to "Welcome"./****** Customize admin message "Howdy" to "Welcome" ******/ $nohowdy = "Welcome"; if (is_admin()) { add_action('init', 'artdev_nohowdy_h'); add_action('admin_footer', 'artdev_nohowdy_f'); } // Load jQuery function artdev_nohowdy_h() { wp_enqueue_script('jquery'); } // Modify function artdev_nohowdy_f() { global $nohowdy; echo <<<JS <script type="text/javascript"> //<![CDATA[ var nohowdy = "$nohowdy"; jQuery('#user_info p') .html( jQuery('#user_info p') .html() .replace(/Howdy/,nohowdy) ); //]]> JS; }
PHP version, using
gettext
filter:add_filter('gettext', 'change_howdy', 10, 3); function change_howdy($translated, $text, $domain) { if (!is_admin() || 'default' != $domain) return $translated; if (false !== strpos($translated, 'Howdy')) return str_replace('Howdy', 'Welcome', $translated); return $translated; }
-
难道不能已经在PHP端对此进行了编辑,因此根本无法获得输出?Can't this already be edited on the PHP side so it doesn't get output at all?
- 3
- 2011-02-14
- hakre
-
当然,在3.0+版本中,它可以正常工作,但是为什么在较旧版本中却不能呢?检查您使用的其他任何插件是否对此负责.此处的文本替换为JQuery,也许是JQuery插件?It's working fine here in 3.0+ versions for sure, but why not in older versions? Check if any other plugin you use is responsible for this. The text here replaced with JQuery, maybe a JQuery plugin?
- 0
- 2011-02-14
- Philip
-
- 2011-01-26
在"立即添加"中添加自定义帖子类型管理控制台
这将包括您的自定义帖子类型以及"立即注册"(Right Now)中每种类型的帖子计数仪表板小部件.
// ADD CUSTOM POST TYPES TO THE 'RIGHT NOW' DASHBOARD WIDGET function wph_right_now_content_table_end() { $args = array( 'public' => true , 'show_ui' => true , '_builtin' => false ); $output = 'object'; $operator = 'and'; $post_types = get_post_types( $args , $output , $operator ); foreach( $post_types as $post_type ) { $num_posts = wp_count_posts( $post_type->name ); $num = number_format_i18n( $num_posts->publish ); $text = _n( $post_type->labels->singular_name, $post_type->labels->name , intval( $num_posts->publish ) ); if ( current_user_can( 'edit_posts' ) ) { $num = "<a href='edit.php?post_type=$post_type->name'>$num</a>"; $text = "<a href='edit.php?post_type=$post_type->name'>$text</a>"; } echo '<tr><td class="first b b-' . $post_type->name . '">' . $num . '</td>'; echo '<td class="t ' . $post_type->name . '">' . $text . '</td></tr>'; } $taxonomies = get_taxonomies( $args , $output , $operator ); foreach( $taxonomies as $taxonomy ) { $num_terms = wp_count_terms( $taxonomy->name ); $num = number_format_i18n( $num_terms ); $text = _n( $taxonomy->labels->singular_name, $taxonomy->labels->name , intval( $num_terms )); if ( current_user_can( 'manage_categories' ) ) { $num = "<a href='edit-tags.php?taxonomy=$taxonomy->name'>$num</a>"; $text = "<a href='edit-tags.php?taxonomy=$taxonomy->name'>$text</a>"; } echo '<tr><td class="first b b-' . $taxonomy->name . '">' . $num . '</td>'; echo '<td class="t ' . $taxonomy->name . '">' . $text . '</td></tr>'; } } add_action( 'right_now_content_table_end' , 'wph_right_now_content_table_end' );
Include custom post types in "Right Now" admin dashboard
This will include your custom post types and the post counts for each type in the "Right Now" dashboard widget.
// ADD CUSTOM POST TYPES TO THE 'RIGHT NOW' DASHBOARD WIDGET function wph_right_now_content_table_end() { $args = array( 'public' => true , 'show_ui' => true , '_builtin' => false ); $output = 'object'; $operator = 'and'; $post_types = get_post_types( $args , $output , $operator ); foreach( $post_types as $post_type ) { $num_posts = wp_count_posts( $post_type->name ); $num = number_format_i18n( $num_posts->publish ); $text = _n( $post_type->labels->singular_name, $post_type->labels->name , intval( $num_posts->publish ) ); if ( current_user_can( 'edit_posts' ) ) { $num = "<a href='edit.php?post_type=$post_type->name'>$num</a>"; $text = "<a href='edit.php?post_type=$post_type->name'>$text</a>"; } echo '<tr><td class="first b b-' . $post_type->name . '">' . $num . '</td>'; echo '<td class="t ' . $post_type->name . '">' . $text . '</td></tr>'; } $taxonomies = get_taxonomies( $args , $output , $operator ); foreach( $taxonomies as $taxonomy ) { $num_terms = wp_count_terms( $taxonomy->name ); $num = number_format_i18n( $num_terms ); $text = _n( $taxonomy->labels->singular_name, $taxonomy->labels->name , intval( $num_terms )); if ( current_user_can( 'manage_categories' ) ) { $num = "<a href='edit-tags.php?taxonomy=$taxonomy->name'>$num</a>"; $text = "<a href='edit-tags.php?taxonomy=$taxonomy->name'>$text</a>"; } echo '<tr><td class="first b b-' . $taxonomy->name . '">' . $num . '</td>'; echo '<td class="t ' . $taxonomy->name . '">' . $text . '</td></tr>'; } } add_action( 'right_now_content_table_end' , 'wph_right_now_content_table_end' );
-
突然,RightNow小部件中出现了一个帖子类型" WooFramework Internal Container"!...一个额外的参数是必需的''show_ui'=>true'并且现在全部为KSuddenly, there was a post type "WooFramework Internal Container" appearing in the RightNow widget! . . . one extra argument is needed `'show_ui' => true` and it's all K now
- 0
- 2012-04-04
- brasofilo
-
这与我上面发布的内容完全相同.This is the same exact thing I had posted above.
- 0
- 2012-12-09
- jaredwilli
-
- 2010-11-09
向仪表板标题添加法典搜索表单
这是将Codex搜索表单添加到仪表板标题的一种简单方法,该表单位于快速链接下拉菜单的右上方.
/** * ADD WP CODEX SEARCH FORM TO DASHBOARD HEADER */ function wp_codex_search_form() { echo '<form target="_blank" method="get" action="http://wordpress.org/search/do-search.php" class="alignright" style="margin: 11px 5px 0;"> <input type="text" onblur="this.value=(this.value==\'\') ? \'Search the Codex\' : this.value;" onfocus="this.value=(this.value==\'Search the Codex\') ? \'\' : this.value;" maxlength="150" value="Search the Codex" name="search" class="text"> <input type="submit" value="Go" class="button" /> </form>'; } if( current_user_can( 'manage_plugins' )) { // The number 11 needs to be a 10 for this to work! add_filter( 'in_admin_header', 'wp_codex_search_form', 11 ); }
Add a codex search form to the dashboard header
This is a simple way to add a codex search form to the dashboard header, on the top-right next to the quicklinks drop-down.
/** * ADD WP CODEX SEARCH FORM TO DASHBOARD HEADER */ function wp_codex_search_form() { echo '<form target="_blank" method="get" action="http://wordpress.org/search/do-search.php" class="alignright" style="margin: 11px 5px 0;"> <input type="text" onblur="this.value=(this.value==\'\') ? \'Search the Codex\' : this.value;" onfocus="this.value=(this.value==\'Search the Codex\') ? \'\' : this.value;" maxlength="150" value="Search the Codex" name="search" class="text"> <input type="submit" value="Go" class="button" /> </form>'; } if( current_user_can( 'manage_plugins' )) { // The number 11 needs to be a 10 for this to work! add_filter( 'in_admin_header', 'wp_codex_search_form', 11 ); }
-
您能否更新此代码以显示如何仅将其显示给具有特定角色的用户(特别是管理员)?can you update this code to show how this only gets displayed to users with a specific role (specifically administrators)?
- 0
- 2011-02-22
- NetConstructor.com
-
@ NetConstructor.com我对其进行了编辑,以显示current_user_can是否可以管理插件,然后添加过滤器.就这么简单.@NetConstructor.com I edited it to show if current_user_can manage plugins, then add the filter. It's that simple.
- 1
- 2011-02-23
- jaredwilli
-
在目前的WP版本中仍然可以使用吗...我无法正常使用Does this still work in the current WP version... I couldn't get it to work
- 1
- 2012-02-15
- Zach Lysobey
-
我将add_filter封装在此动作调用中:** add_action('plugins_loaded','pluginInit'); **,然后是'functionpluginInit(){if ... add_filter(...)}`--我在WP 3.4-alpha中运行此程序,并且必须使用**in_admin_footer **I encapsulated the add_filter in this action call: **add_action('plugins_loaded', 'pluginInit');**, and then `function pluginInit(){if...add_filter(...)}` - - i'm running this in WP 3.4-alpha, and had to use **in_admin_footer**
- 0
- 2012-04-02
- brasofilo
-
- 2010-11-14
"新媒体库"列以重新附加图像
此代码将新列添加到"媒体库"页面,使您可以重新附加图像
add_filter("manage_upload_columns", 'upload_columns'); add_action("manage_media_custom_column", 'media_custom_columns', 0, 2); function upload_columns($columns) { unset($columns['parent']); $columns['better_parent'] = "Parent"; return $columns; } function media_custom_columns($column_name, $id) { $post = get_post($id); if($column_name != 'better_parent') return; if ( $post->post_parent > 0 ) { if ( get_post($post->post_parent) ) { $title =_draft_or_post_title($post->post_parent); } ?> <strong><a href="<?php echo get_edit_post_link( $post->post_parent ); ?>"><?php echo $title ?></a></strong>, <?php echo get_the_time(__('Y/m/d')); ?> <br /> <a class="hide-if-no-js" onclick="findPosts.open('media[]','<?php echo $post->ID ?>');return false;" href="#the-list"><?php _e('Re-Attach'); ?></a> <?php } else { ?> <?php _e('(Unattached)'); ?><br /> <a class="hide-if-no-js" onclick="findPosts.open('media[]','<?php echo $post->ID ?>');return false;" href="#the-list"><?php _e('Attach'); ?></a> <?php } }
New Media Library Column to Re-Attach Images
This code adds a new column to the Media Library Page allowing you to re-attach images
add_filter("manage_upload_columns", 'upload_columns'); add_action("manage_media_custom_column", 'media_custom_columns', 0, 2); function upload_columns($columns) { unset($columns['parent']); $columns['better_parent'] = "Parent"; return $columns; } function media_custom_columns($column_name, $id) { $post = get_post($id); if($column_name != 'better_parent') return; if ( $post->post_parent > 0 ) { if ( get_post($post->post_parent) ) { $title =_draft_or_post_title($post->post_parent); } ?> <strong><a href="<?php echo get_edit_post_link( $post->post_parent ); ?>"><?php echo $title ?></a></strong>, <?php echo get_the_time(__('Y/m/d')); ?> <br /> <a class="hide-if-no-js" onclick="findPosts.open('media[]','<?php echo $post->ID ?>');return false;" href="#the-list"><?php _e('Re-Attach'); ?></a> <?php } else { ?> <?php _e('(Unattached)'); ?><br /> <a class="hide-if-no-js" onclick="findPosts.open('media[]','<?php echo $post->ID ?>');return false;" href="#the-list"><?php _e('Attach'); ?></a> <?php } }
-
- 2010-11-16
将编辑器默认设置为所见即所得或HTML
function my_default_editor() { $r = 'tinymce'; // html or tinymce return $r; } add_filter( 'wp_default_editor', 'my_default_editor' );
以下是删除HTML编辑器的方法
jQuery(document).ready(function($) { $("#edButtonHTML").remove(); });
已更新 这是将默认编辑器设置为HTML的另一种方法
add_filter('wp_default_editor', create_function('', 'return "html";'));
Set Editor Defaults to WYSIWYG or HTML
function my_default_editor() { $r = 'tinymce'; // html or tinymce return $r; } add_filter( 'wp_default_editor', 'my_default_editor' );
Here is how to remove the HTML Editor
jQuery(document).ready(function($) { $("#edButtonHTML").remove(); });
UPDATED here is another way to set the default editor to HTML
add_filter('wp_default_editor', create_function('', 'return "html";'));
-
查看有关该来源的更多信息:http://wpengineer.com/1946/disable-html-editor-wordpress/see more informations on the origin: http://wpengineer.com/1946/disable-html-editor-wordpress/
- 0
- 2010-11-17
- bueltge
-
- 2010-09-30
删除作者Metabox/选项&amp;移至发布MetaBox
测试于: Wordpress 3.0.1
让我抓狂的一件事是混乱的Wordpress Admin区域.现在,我始终从一开始就在我的functions.php文件中设置的元素之一是删除"作者" MetaBox和"屏幕选项",然后将该选项添加到"发布" Metabox中.我认为这很有意义,并保持环境清洁.这也尊重适用的权限.
要实现此目标,只需将以下代码复制并粘贴到您的functions.php文件中即可.
如果您觉得有更好的方法可以这样做,请提出建议.
注意:更新了代码以解决编码问题
// MOVE THE AUTHOR METABOX INTO THE PUBLISH METABOX add_action( 'admin_menu', 'remove_author_metabox' ); add_action( 'post_submitbox_misc_actions', 'move_author_to_publish_metabox' ); function remove_author_metabox() { remove_meta_box( 'authordiv', 'post', 'normal' ); } function move_author_to_publish_metabox() { global $post_ID; $post = get_post( $post_ID ); echo '<div id="author" class="misc-pub-section" style="border-top-style:solid; border-top-width:1px; border-top-color:#EEEEEE; border-bottom-width:0px;">Author: '; post_author_meta_box( $post ); echo '</div>'; }
Remove Author Metabox/Options & Move to Publish MetaBox
Tested on: Wordpress 3.0.1
One of the things that drive me crazy is a cluttered Wordpress Admin area. One of the elements which I now always setup from the start in my functions.php file is removing the Author MetaBox and Screen Options and then adding the option into the publish metabox. In my opinion this just makes sense and keep things clean. This also respects applicable permissions.
To achieve this goal, just copy and past the following code into your functions.php file.
If you feel there is a better way of doing this please suggest.
NOTE: UPDATED THE CODE TO FIX A CODING ISSUE
// MOVE THE AUTHOR METABOX INTO THE PUBLISH METABOX add_action( 'admin_menu', 'remove_author_metabox' ); add_action( 'post_submitbox_misc_actions', 'move_author_to_publish_metabox' ); function remove_author_metabox() { remove_meta_box( 'authordiv', 'post', 'normal' ); } function move_author_to_publish_metabox() { global $post_ID; $post = get_post( $post_ID ); echo '<div id="author" class="misc-pub-section" style="border-top-style:solid; border-top-width:1px; border-top-color:#EEEEEE; border-bottom-width:0px;">Author: '; post_author_meta_box( $post ); echo '</div>'; }
-
不会将作者元框添加到我的发布框中.我认为是因为没有`move_author_to_publish_box`函数的`add_action`,所以我添加了`add_action('admin_menu','move_author_to_publish_box');`,但这给了我**"致命错误:调用未定义函数post_author_meta_box()" **It doesn't add the Author Metabox to my Publish Box. I figured it was because there was no `add_action` for the `move_author_to_publish_box` function so I added `add_action('admin_menu', 'move_author_to_publish_box');` but that gave me a **"Fatal error: Call to undefined function post_author_meta_box()"**
- 0
- 2010-12-05
- matt
-
您正在使用哪个版本的wordpress?what version of wordpress are you using?
- 0
- 2010-12-06
- NetConstructor.com
-
以及您将如何添加作者进行发布?在admin_init或admin_menu上不起作用.And how would you add the author to publish? On admin_init or on admin_menu wouldn't work.
- 0
- 2011-02-01
- kaiser
-
@kaiser-我不确定我是否理解您的问题.此代码仅删除"作者"元框,并将选择作者的选项放到"发布"元框中.@kaiser -- I am not sure I understand your question. This code just removes the "author" metabox and places the option to select the author into the "publish" metabox.
- 0
- 2011-02-01
- NetConstructor.com
-
@NetConstructor:我昨天(3.0.4)刚刚对其进行了测试,是的,作者框消失了,但没有移到发布框.在查看代码时,我什么也看不到,因为该函数没有在任何地方触发...您只是将remove_author_box()fn添加到admin_menu操作钩子,而不是move_author_to_publish_box()fn.@NetConstructor: I just gave it a test yesterday (3.0.4) and yes, the author box is gone, but not moved to the publish box. When looking at the code i can't see any way, because the function is no where triggered... you just added the remove_author_box() fn to admin_menu action hook, but not the move_author_to_publish_box() fn.
- 1
- 2011-02-01
- kaiser
-
@kaiser-您的权利,经过审查后,我确实注意到了这个问题.我更新了答案中的代码,因此只需要删除之前包含的所有内容,以及刚刚删除的完整代码中的所有内容即可.让我知道这是否可以解决问题.投票回答问题并回答是否可以解决问题-CH :)@kaiser -- your right, after reviewing this I did noticed the issue. I updated the code in my answer so just delete everything you included from this before hand and just past in the full code above. Let me know if this fixes things. Vote up the question and answer if it fixes the problem - CH :)
- 1
- 2011-02-01
- NetConstructor.com
-
@ CH/NC:当然可以,甚至不必测试.投票:n/p.可以/应该扩展为也容纳一些其他废话/杂物...(讨论,发布缩略图).我不会修改您的答案,但是如果您有时间,那甚至值得写一篇博客文章.:)@CH/NC: Sure it works, don't even have to test it. Voting up: n/p. Could/Should be extended to hold some of the other crap/cluter too... (discussions, post thumbnail). I'm not going to mod your answer, but if you got some time, it would even be worth a blog-post. :)
- 0
- 2011-02-01
- kaiser
-
@kaiser-不确定是否可以从中看到价值?我的目标只是删除一些多余的元框,例如子句和作者.@kaiser -- not exactly sure where you see value in this? My objective was just to remove some of the metaboxes which were extra and unneeded such as slugs and authors.
- 0
- 2011-02-02
- NetConstructor.com
-
@you:不,我绝对看到好处.您不仅误会了我,而且180度误解了我.我说过,这样很好是a)可以扩展到讨论和缩略图,b)可以在博客文章中"整理内容编辑页面"左右.编辑:不需要测试手段,我知道它有效.@you: No, i absolutely see the benefit. You didn't only missunderstand me, you got me wrong by 180 degree. I said that it's that good that it should a) be extended to discussions & thumbnails and b) have a blog post about it "decluttering content edit pages" or so. Edit: With no need for testing means, that i know that it works.
- 0
- 2011-02-02
- kaiser
-
@kaiser-感谢您的赞美,但是我仍然不明白您怎么看,将讨论或缩略图集成到发布metabox中将对用户有好处.我只看到删除slug和author元框的好处,因为从逻辑上讲,它们应该在发布元框中.我还是误会你的意思吗?@kaiser -- appreciate the compliment however what I still don't understand is how you see it would be of benefit to users to have discussions or thumbnails integrated into the publish metabox. I only saw the benefit of removing the slug and author metaboxes as those logically should be within the publish metabox. Am I still misunderstanding your point?
- 0
- 2011-02-03
- NetConstructor.com
-
@NC:不,你说对了.对我来说,这不是"发布框",而是右上角的小东西框.我认为不需要为每个单独的"添加缩略图"文本行或讨论中的两个复选框都设置单独的框.没有其他的.@NC: No, you got me right. For me it's not "the publish box", but just a box on the upper right side for small stuff. I don't see a need to have a separate box for each the single "add thumbnail" text line or the two checkboxes from discussions. Nothing else.
- 0
- 2011-02-03
- kaiser
-
- 2010-11-05
快速确定服务器&amp;环境详细信息
如果您有多个服务器和多个环境(例如开发,QA和生产环境),这将非常有用.
对于我的系统,环境由主机名的前3个字母决定,但是可以轻松更改为适合您需要的名称.
add_action( 'admin_notices', 'report_environment_status', 3 ); // Report on which server and environment details function report_environment_status() { $server = php_uname('n'); switch (strtolower(substr($server,0,3))) { case 'pXX': $msg = "PRODUCTION"; break; case 'qXX': $msg = "QA"; break; case 'dXX': $msg = "DEVELOPMENT"; break; default : $msg = 'UNKNOWN'; } echo "<div id='update-nag'>"; echo "<b>You are in the $msg environment. (Server: $server)</b>"; echo "</div>"; }
这使我免于多次更新错误的环境.
您也可以将其变成插件并通过网络激活它,以便所有站点都可以收到通知.
Quickly Determine Server & Environment Details
If you have multiple servers and multiple environments such as development, QA, and production environments, this can be very useful.
For my systems, environment is determined by the first 3 letters of the hostname, but this could easily be changed to whatever suits your needs.
add_action( 'admin_notices', 'report_environment_status', 3 ); // Report on which server and environment details function report_environment_status() { $server = php_uname('n'); switch (strtolower(substr($server,0,3))) { case 'pXX': $msg = "PRODUCTION"; break; case 'qXX': $msg = "QA"; break; case 'dXX': $msg = "DEVELOPMENT"; break; default : $msg = 'UNKNOWN'; } echo "<div id='update-nag'>"; echo "<b>You are in the $msg environment. (Server: $server)</b>"; echo "</div>"; }
This has saved me many times from making updates to the wrong environment.
You can also turn this into a plugin and network activate it so all sites get the notification.
-
感谢你的作品.您能否详细说明一下这种情况以及不同的使用情况?我认为如果您可以包括在运行不同开发版本的代码时可以使用的任何其他代码,这对我和其他人也将非常有帮助.另外,如果您采用一种巧妙的方式将站点从开发迁移到生产,或者从一个域迁移到另一个域.所有这些事情都非常有帮助.最后,更新文件时是否使用任何类型的Subversion客户端?如果是这样,您对此有何具体要求?thanks for this piece. Could you please elaborate a bit more on this and different usage cases? I think it would also be VERY helpful to me and others if you could possibly include any other code which you utilize when your running different development versions of code. Also, if you utilize a slick way of moving a site from development to production or migrate from one domain to a different one. All these things are very helpful. Finally, do you use any type of subversion client when updating your files? If so, is there anything specific you do for this?
- 0
- 2010-11-05
- NetConstructor.com
-
请不要将此标记为答案.否则,此列表将无法正常工作.Please don't mark this as the answer. Otherwise this listing won't work.
- 0
- 2010-11-06
- hakre
-
我认为最好在消息上使用不同的CSS类,以便除了文本稍有不同之外,消息在环境中还可以具有不同的背景色.否则,我认为您会很快注意到文本差异.I think it'd be better to use different CSS classes on the message, so that the messages could have different background colors in environments in addition to just having slightly different text. Otherwise I think you'd stop noticing the text differences pretty quickly.
- 1
- 2012-01-16
- Ian Dunn
-
- 2010-11-06
快速功能.php编辑的集合
我在
functions.php
中也做了一些很棒的调整.多年来通过搜索找到了其中的大多数.节选结尾
function new_excerpt_more($more) { return '...'; } add_filter('excerpt_more', 'new_excerpt_more');
替换WP管理员徽标
function new_admin_logo() { echo '<style type="text/css">#header-logo { background-image: url('.get_bloginfo('template_directory').'/images/admin_logo.png) !important; }</style>'; } add_action('admin_head', 'new_admin_logo');
自定义Favicon WP-Admin
function admin_favicon() { echo '<link rel="shortcut icon" type="image/x-icon" href="' . get_bloginfo('template_directory') . '/images/favicon.ico" />'; } add_action( 'admin_head', 'admin_favicon' );
自定义管理员页脚
function custom_admin_footer() { echo 'Welcome to my blog! No More Documentation Links!'; } add_filter('admin_footer_text', 'custom_admin_footer');
Collection of quick function.php edits
I have a few awesome tweaks in
functions.php
as well. Found most of these by searching for them over the years.Excerpt Ending
function new_excerpt_more($more) { return '...'; } add_filter('excerpt_more', 'new_excerpt_more');
Replace WP Admin Logo
function new_admin_logo() { echo '<style type="text/css">#header-logo { background-image: url('.get_bloginfo('template_directory').'/images/admin_logo.png) !important; }</style>'; } add_action('admin_head', 'new_admin_logo');
Custom Favicon WP-Admin
function admin_favicon() { echo '<link rel="shortcut icon" type="image/x-icon" href="' . get_bloginfo('template_directory') . '/images/favicon.ico" />'; } add_action( 'admin_head', 'admin_favicon' );
Custom Admin Footer
function custom_admin_footer() { echo 'Welcome to my blog! No More Documentation Links!'; } add_filter('admin_footer_text', 'custom_admin_footer');
-
谢谢,但是这些已经被添加了.thanks but these have already been added.
- 0
- 2010-11-08
- NetConstructor.com
-
您能否请您仔细阅读这些内容,并确保没有重复的条目,并在接下来的几周内将每个条目分成自己的答案?could you please go through these and ensure there are no duplicate entires and split each one up into its own answer within the next few weeks?
- 0
- 2011-01-26
- NetConstructor.com
-
- 2010-11-08
已修复:删除默认的Wordpress元框
这非常方便,但是有一些错误
// REMOVE META BOXES FROM DEFAULT POSTS SCREEN function remove_default_post_screen_metaboxes() { remove_meta_box( 'postcustom','post','normal' ); // Custom Fields Metabox remove_meta_box( 'postexcerpt','post','normal' ); // Excerpt Metabox remove_meta_box( 'commentstatusdiv','post','normal' ); // Comments Metabox remove_meta_box( 'trackbacksdiv','post','normal' ); // Talkback Metabox remove_meta_box( 'slugdiv','post','normal' ); // Slug Metabox remove_meta_box( 'authordiv','post','normal' ); // Author Metabox } add_action('admin_menu','remove_default_post_screen_metaboxes'); // REMOVE META BOXES FROM DEFAULT PAGES SCREEN function remove_default_page_screen_metaboxes() { global $post_type; remove_meta_box( 'postcustom','page','normal' ); // Custom Fields Metabox remove_meta_box( 'postexcerpt','page','normal' ); // Excerpt Metabox remove_meta_box( 'commentstatusdiv','page','normal' ); // Comments Metabox remove_meta_box('commentsdiv','page','normal'); // Comments remove_meta_box( 'trackbacksdiv','page','normal' ); // Talkback Metabox remove_meta_box( 'slugdiv','page','normal' ); // Slug Metabox remove_meta_box( 'authordiv','page','normal' ); // Author Metabox } add_action('admin_menu','remove_default_page_screen_metaboxes');
Fixed: Remove Default Wordpress Meta Boxes
This was very handy but had some errors
// REMOVE META BOXES FROM DEFAULT POSTS SCREEN function remove_default_post_screen_metaboxes() { remove_meta_box( 'postcustom','post','normal' ); // Custom Fields Metabox remove_meta_box( 'postexcerpt','post','normal' ); // Excerpt Metabox remove_meta_box( 'commentstatusdiv','post','normal' ); // Comments Metabox remove_meta_box( 'trackbacksdiv','post','normal' ); // Talkback Metabox remove_meta_box( 'slugdiv','post','normal' ); // Slug Metabox remove_meta_box( 'authordiv','post','normal' ); // Author Metabox } add_action('admin_menu','remove_default_post_screen_metaboxes'); // REMOVE META BOXES FROM DEFAULT PAGES SCREEN function remove_default_page_screen_metaboxes() { global $post_type; remove_meta_box( 'postcustom','page','normal' ); // Custom Fields Metabox remove_meta_box( 'postexcerpt','page','normal' ); // Excerpt Metabox remove_meta_box( 'commentstatusdiv','page','normal' ); // Comments Metabox remove_meta_box('commentsdiv','page','normal'); // Comments remove_meta_box( 'trackbacksdiv','page','normal' ); // Talkback Metabox remove_meta_box( 'slugdiv','page','normal' ); // Slug Metabox remove_meta_box( 'authordiv','page','normal' ); // Author Metabox } add_action('admin_menu','remove_default_page_screen_metaboxes');
-
- 2010-11-11
延长自动注销期限
测试于: Wordpress 3.0.1
使用下面的代码,您可以增加cookie的保存时间,因此,已登录的用户可以保持更长的登录时间:
function keep_me_logged_in_for_1_year( $expirein ) { return 31556926; // 1 year in seconds } add_filter( 'auth_cookie_expiration', 'keep_me_logged_in_for_1_year' );
Extending Auto Logout Period
Tested on: Wordpress 3.0.1
Using the code below you can increase the time cookies are kept and therefor users who are logged in remain logged in longer:
function keep_me_logged_in_for_1_year( $expirein ) { return 31556926; // 1 year in seconds } add_filter( 'auth_cookie_expiration', 'keep_me_logged_in_for_1_year' );
-
还有另一个可以在我这里找到的技巧:http://wpengineer.com/2064/stop-wordpress-from-ever-logging-out/there is another trick which can be used which I found here: http://wpengineer.com/2064/stop-wordpress-from-ever-logging-out/
- 1
- 2010-11-11
- NetConstructor.com
-
应该注意的是,会话超时是为了安全起见,因此扩展/删除它会使您的站点更容易受到攻击.It should be noted that the session timeout is there as a security precaution, so extending/removing it makes your site more vulnerable.
- 3
- 2012-01-16
- Ian Dunn
-
- 2010-11-14
添加"设置"插件列表页面上的插件链接
设置"设置" WordPress后端的插件页面上的插件链接,易于使用的用户跳转设置(该代码还提供适用于2.9版以下WordPress版本的解决方案)
// plugin definitions define( 'FB_BASENAME', plugin_basename( __FILE__ ) ); define( 'FB_BASEFOLDER', plugin_basename( dirname( __FILE__ ) ) ); define( 'FB_FILENAME', str_replace( FB_BASEFOLDER.'/', '', plugin_basename(__FILE__) ) ); function filter_plugin_meta($links, $file) { /* create link */ if ( $file == FB_BASENAME ) { array_unshift( $links, sprintf( '<a href="options-general.php?page=%s">%s</a>', FB_FILENAME, __('Settings') ) ); } return $links; } global $wp_version; if ( version_compare( $wp_version, '2.7alpha', '>' ) ) { add_filter( 'plugin_action_links_' . FB_WM_BASENAME, 'filter_plugin_meta', 10, 2); } else { add_filter( 'plugin_action_links', 'filter_plugin_meta', 10, 2 ); }
Add a "Settings" link for plugins on the plugin list page
Set "Settings" link for plugins on plugin-page in WordPress backend, easy to use jump to settings for users (the code is also with an solution for WordPress version smaller 2.9)
// plugin definitions define( 'FB_BASENAME', plugin_basename( __FILE__ ) ); define( 'FB_BASEFOLDER', plugin_basename( dirname( __FILE__ ) ) ); define( 'FB_FILENAME', str_replace( FB_BASEFOLDER.'/', '', plugin_basename(__FILE__) ) ); function filter_plugin_meta($links, $file) { /* create link */ if ( $file == FB_BASENAME ) { array_unshift( $links, sprintf( '<a href="options-general.php?page=%s">%s</a>', FB_FILENAME, __('Settings') ) ); } return $links; } global $wp_version; if ( version_compare( $wp_version, '2.7alpha', '>' ) ) { add_filter( 'plugin_action_links_' . FB_WM_BASENAME, 'filter_plugin_meta', 10, 2); } else { add_filter( 'plugin_action_links', 'filter_plugin_meta', 10, 2 ); }
-
我尝试使用此代码,但似乎在wordpress 3.1上不起作用.你能确认并更新吗I have attempted to use this code but it seem that it does not work on wordpress 3.1. Can you confirm and update
- 0
- 2011-02-22
- NetConstructor.com
-
@ NetConstructor.com我已经从我的一个免费插件中更新了一点出价,在我所有的插件上都可以正常工作@NetConstructor.com I have update a little bid from one of my free plugins, on all my plugins works fine this
- 0
- 2011-02-28
- bueltge
-
我希望所有插件作者都能做到这一点(当然,对于具有设置页面的插件),这样的代码就不是必需的.I wish all plugin authors would do this (for the plugins that have settings pages, of course) so this kind of code wouldn't be necessary.
- 0
- 2011-12-06
- JimmyPena
-
- 2010-12-28
删除WordPress注释中URL的自动链接
remove_filter('comment_text','make_clickable',9);
Remove Auto Linking of URLs in WordPress Comments
remove_filter('comment_text', 'make_clickable', 9);
-
真好!我一直在寻找将`make_clickable()`函数应用到`the_content`上的功能!他们为什么不首先这样做呢?就像添加`add_filter('the_content','make_clickable');一样简单;或者可以通过使用[不同的钩子]保存帖子来完成(http://stackoverflow.com/a/5036802/288906)Nice! I was looking for that `make_clickable()` function to apply it to `the_content`! Why didn't they do it in the first place? It's as simple as adding `add_filter( 'the_content', 'make_clickable');` Alternatively it could be done when the post is saved by using a [different hook](http://stackoverflow.com/a/5036802/288906)
- 0
- 2014-01-11
- fregante
-
- 2011-03-19
将页面模板过滤器添加到页面列表中
经过以下测试: WP 3.1
在页面列表中添加页面模板过滤器,因此您可以查看附加了给定模板的页面列表.
class Page_Template_Filter { private $templates = array(); public function __construct() { // If it's not the admin area or the current user can't edit pages let's just bail here if( !is_admin() || !current_user_can('edit_pages') ) return; add_action( 'parse_query', array( $this, 'pt_parse_query' ) ); add_action( 'restrict_manage_posts', array( $this, 'pt_restrict_manage_posts' ) ); } public function pt_parse_query( $query ) { global $pagenow, $post_type; if( 'edit.php' != $pagenow ) return; switch( $post_type ) { case 'post': break; case 'page': $this->templates = get_page_templates(); if( empty( $this->templates ) ) return; if( !$this->is_set_template() ) return; $meta_group = array( 'key' => '_wp_page_template', 'value' => $this->get_template() ); set_query_var( 'meta_query', array( $meta_group ) ); break; } } public function pt_restrict_manage_posts() { if( empty( $this->templates ) ) return; $this->template_dropdown(); } private function get_template() { if( $this->is_set_template() ) foreach( $this->templates as $template ) { if( $template != $_GET['page_template'] ) continue; return $template; } return ''; } private function is_set_template() { return (bool) ( isset( $_GET['page_template'] ) && ( in_array( $_GET['page_template'], $this->templates ) ) ); } private function template_dropdown() { ?> <select name="page_template" id="page_template"> <option value=""> - no template - </option> <?php foreach( $this->templates as $name => $file ): ?> <option value="<?php echo $file; ?>"<?php selected( $this->get_template() == $file ); ?>><?php _e( $name ); ?></option> <?php endforeach;?> </select> <?php } } add_action('admin_init', 'load_ptf'); function load_ptf() { $Page_Template_Filter = new Page_Template_Filter; }
至少需要3.1才能运行,尽管
meta_query
可以用3.0的旧版meta_key
和meta_value
代替.Add page template filter to page listing
Tested on: WP 3.1
Adds a page template filter to the page listing, so you can view a list of pages that have a given template attached.
class Page_Template_Filter { private $templates = array(); public function __construct() { // If it's not the admin area or the current user can't edit pages let's just bail here if( !is_admin() || !current_user_can('edit_pages') ) return; add_action( 'parse_query', array( $this, 'pt_parse_query' ) ); add_action( 'restrict_manage_posts', array( $this, 'pt_restrict_manage_posts' ) ); } public function pt_parse_query( $query ) { global $pagenow, $post_type; if( 'edit.php' != $pagenow ) return; switch( $post_type ) { case 'post': break; case 'page': $this->templates = get_page_templates(); if( empty( $this->templates ) ) return; if( !$this->is_set_template() ) return; $meta_group = array( 'key' => '_wp_page_template', 'value' => $this->get_template() ); set_query_var( 'meta_query', array( $meta_group ) ); break; } } public function pt_restrict_manage_posts() { if( empty( $this->templates ) ) return; $this->template_dropdown(); } private function get_template() { if( $this->is_set_template() ) foreach( $this->templates as $template ) { if( $template != $_GET['page_template'] ) continue; return $template; } return ''; } private function is_set_template() { return (bool) ( isset( $_GET['page_template'] ) && ( in_array( $_GET['page_template'], $this->templates ) ) ); } private function template_dropdown() { ?> <select name="page_template" id="page_template"> <option value=""> - no template - </option> <?php foreach( $this->templates as $name => $file ): ?> <option value="<?php echo $file; ?>"<?php selected( $this->get_template() == $file ); ?>><?php _e( $name ); ?></option> <?php endforeach;?> </select> <?php } } add_action('admin_init', 'load_ptf'); function load_ptf() { $Page_Template_Filter = new Page_Template_Filter; }
Requires at least 3.1 to work, though the
meta_query
could be replaced with the oldermeta_key
andmeta_value
for 3.0.-
完美运行,在3.4-alpha中测试works flawlessly, tested in 3.4-alpha
- 0
- 2012-04-02
- brasofilo
-
- 2010-09-13
不使用XML-RPC来提高性能
测试于: Wordpress 3.0.1
WordPress使用CURL操作来测试XML-RPC的SSL功能.如果您正在使用XML-RPC但未使用,则可以删除过滤器.这是一个很小的性能提升(因为基本上WP在https url上执行了cURL GET,并且1)收到拒绝的消息,或者2)超时,最多可能需要5秒钟),但是在我们的情况下,它实际上阻止了网关超时,其中代理在cURL GET超时之前就超时,导致XML-RPC无法使用.
// Prevents WordPress from testing ssl capability on domain.com/xmlrpc.php?rsd remove_filter('atom_service_url','atom_service_url_filter');
Remove XML-RPC when not in use for performance boost
Tested on: Wordpress 3.0.1
WordPress uses a CURL operation to test for SSL capability for XML-RPC. If you're using XML-RPC but not using, then you can remove the filter. This is a small performance boost (since basically WP does a cURL GET on the https url and either 1) gets a denied message, or 2) times out, and it can take upwards of 5 seconds), but in our case it actually prevented a gateway timeout where a proxy was timing out before the cURL GET was timing out rendering XML-RPC unusable.
// Prevents WordPress from testing ssl capability on domain.com/xmlrpc.php?rsd remove_filter('atom_service_url','atom_service_url_filter');
-
感谢您的代码建议.一个问题,如果您使用的是XML-RPC而不使用SSL功能,那么包含这些代码是否可以使一切加速?如果不是,在什么情况下包含此代码会有所帮助?Thanks for the code suggestion. One question, if you are using XML-RPC but not using the SSL capabilities would the including of this code speed things up at all? If not, in what situations would the inclusion of this code serve a benefit?
- 0
- 2010-09-14
- NetConstructor.com
-
它对XML-RPC调用的性能影响很小,因为它们不再需要通过HTTP请求检查SSL功能.It has a minuscule effect on performance for XML-RPC calls, since they no longer have to check for SSL capability via an HTTP request.
- 0
- 2010-09-19
- gabrielk
-
- 2010-11-15
全局获取所有自定义字段
function get_custom_field($key, $echo = FALSE) { global $post; $custom_field = get_post_meta( $post->ID, $key, true ); if ( $echo == false ) return $custom_field; echo $custom_field; }
然后单行调用字段
<?php get_custom_field('custom-field-name', TRUE); ?>
Grab all custom fields globally
function get_custom_field($key, $echo = FALSE) { global $post; $custom_field = get_post_meta( $post->ID, $key, true ); if ( $echo == false ) return $custom_field; echo $custom_field; }
Then call the field with a single line
<?php get_custom_field('custom-field-name', TRUE); ?>
-
为什么有人会使用这个?有什么好处?Why would someone use this? What's the benefit?
- 0
- 2010-12-05
- matt
-
对于使用大量自定义字段(我经常在客户端工作中使用)的网站/主题,它可以减少主题中的代码,还可以添加关于是否显示该字段的条件.for sites / themes that use a lot of custom fields (which I use often for client work) it allows for less code in the theme, and also for adding conditionals on whether or not to display the field at all.
- 2
- 2010-12-10
- Norcross
-
- 2010-11-17
返回评论数
这类似于
count_user_posts()
,但返回的是评论数:function count_user_comments($id) { global $wpdb; $users = $wpdb->get_var(" SELECT COUNT( * ) AS total FROM $wpdb->comments WHERE comment_approved = 1 AND user_id = $id"); return $users; }
更多:计算用户的帖子(包括自定义帖子类型)或评论:
function atom_count($user_id, $what_to_count = 'post') { global $wpdb; $where = $what_to_count == 'comment' ? "WHERE comment_approved = 1 AND user_id = {$user_id}" : get_posts_by_author_sql($what_to_count, TRUE, $user_id); $from = "FROM ".(($what_to_count == 'comment') ? $wpdb->comments : $wpdb->posts); $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) {$from} {$where}")); return $count; }
用法示例:
<?php echo atom_count(1, 'movie'); // displays 'movie' post type count ?>
<?php echo atom_count(1, 'comment'); // displays comment count ?>
Return the number of comments
This is like
count_user_posts()
, but returns the number of comments instead:function count_user_comments($id) { global $wpdb; $users = $wpdb->get_var(" SELECT COUNT( * ) AS total FROM $wpdb->comments WHERE comment_approved = 1 AND user_id = $id"); return $users; }
More: Count User's posts (including custom post types) or comments:
function atom_count($user_id, $what_to_count = 'post') { global $wpdb; $where = $what_to_count == 'comment' ? "WHERE comment_approved = 1 AND user_id = {$user_id}" : get_posts_by_author_sql($what_to_count, TRUE, $user_id); $from = "FROM ".(($what_to_count == 'comment') ? $wpdb->comments : $wpdb->posts); $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) {$from} {$where}")); return $count; }
Usage examples:
<?php echo atom_count(1, 'movie'); // displays 'movie' post type count ?>
<?php echo atom_count(1, 'comment'); // displays comment count ?>
-
- 2010-12-28
启用嵌入文本/HTML小部件中
add_filter('widget_text',array($ wp_embed,'run_shortcode'),8); add_filter('widget_text',array($ wp_embed,'autoembed'),8);
我将它用于youtube视频小部件和flickr的内容.
Enable oEmbed in Text/HTML Widgets
add_filter( 'widget_text', array( $wp_embed, 'run_shortcode' ), 8 ); add_filter( 'widget_text', array( $wp_embed, 'autoembed'), 8 );
I use this for youtube video widgets and flickr stuff.
-
- 2010-09-15
帖子字数
测试于: Wordpress 3.0.1
(最初从 Post Word Count插件中提取由尼克·莫里克)
将已发布的单词总数添加到"立即"列表的底部.管理控制台上的框.如果您将博客用作 NaNoWriMo 之类的商品的渠道,或者您只是想保持跟踪,该功能将非常有用您的博客技能变得多么丰富.
function post_word_count() { $count = 0; $posts = get_posts( array( 'numberposts' => -1, 'post_type' => array( 'post', 'page' ) )); foreach( $posts as $post ) { $count += str_word_count( strip_tags( get_post_field( 'post_content', $post->ID ))); } $num = number_format_i18n( $count ); // This block will add your word count to the stats portion of the Right Now box $text = _n( 'Word', 'Words', $num ); echo "<tr><td class='first b'>{$num}</td><td class='t'>{$text}</td></tr>"; // This line will add your word count to the bottom of the Right Now box. echo '<p>This blog contains a total of <strong>' . $num . '</strong> published words!</p>'; } // add to Content Stats table add_action( 'right_now_content_table_end', 'post_word_count'); // add to bottom of Activity Box add_action('activity_box_end', 'post_word_count');
对 Rarst 表示敬意,以免查询地清除代码!
Post Word Count
Tested on: Wordpress 3.0.1
(Originally extracted from the Post Word Count plug-in by Nick Momrick)
Adds a count of total published words to the bottom of the "Right Now" box on the admin dashboard. Useful if you're using your blog as an outlet for something like NaNoWriMo or if you just want to keep track of how prolific your blogging skills have become.
function post_word_count() { $count = 0; $posts = get_posts( array( 'numberposts' => -1, 'post_type' => array( 'post', 'page' ) )); foreach( $posts as $post ) { $count += str_word_count( strip_tags( get_post_field( 'post_content', $post->ID ))); } $num = number_format_i18n( $count ); // This block will add your word count to the stats portion of the Right Now box $text = _n( 'Word', 'Words', $num ); echo "<tr><td class='first b'>{$num}</td><td class='t'>{$text}</td></tr>"; // This line will add your word count to the bottom of the Right Now box. echo '<p>This blog contains a total of <strong>' . $num . '</strong> published words!</p>'; } // add to Content Stats table add_action( 'right_now_content_table_end', 'post_word_count'); // add to bottom of Activity Box add_action('activity_box_end', 'post_word_count');
Kudos to Rarst for the query-free cleanup of the code!
-
感谢您的协助,* Rarst *.我通常不喜欢直接在插件"function.php"代码中包含数据库查询,但就像我说的那样,它最初是从别人的插件中获取的.Thanks for the assist, *Rarst*. I typically don't like to include direct database queries in plug-in `function.php` code, but like I said it was originally taken from someone else's plug-in.
- 0
- 2010-09-15
- EAMann
-
np,我很久以前尝试过,真是一团糟.:)现在,随着技能的提升,是时候做对了.为什么要保留旧的输出部分?我认为将其与其他统计信息一起显示是有意义的.顺便说一句,这个版本给出了不同的总数(与`explode`相比),这可能是由于沿途的过滤器之类的原因,以及通过API进行提取时的情况.np, I tried this long time ago and it was a mess. :) Now with upgraded skills it was time to do it right. Why left old output part? I think it makes sense to display it with rest of stats. btw this version gives different total (comparing to `explode`), this is probably because of filters along the way and such when fetching via API.
- 0
- 2010-09-15
- Rarst
-
帖子数的差异是过滤器的结果……但是,无论如何,使用`get_posts()`可能会更准确.我离开旧的输出行仅仅是因为这就是我一直在使用它的方式……与其他事物相比,意见分歧更大……我将重新添加您的示例以将其添加到统计信息中,以便人们可以选择.The difference in post count is a result of filters ... but using `get_posts()` will likely be a more accurate word count anyway. I left the old output line simply because that's how I've been using it ... more a difference of opinion than anything else ... I'll re-add your example to add it to the stats so people can pick.
- 0
- 2010-09-15
- EAMann
-
- 2010-09-17
仅显示已登录用户的特定内容
测试于: Wordpress 3.0.1
function content_only4logged_in($content) { // ALL LOGGED IN USERS if ( is_user_logged_in() && !is_null($content) && !is_feed() ) { return $content; } else { $content = wp_html_excerpt( $content, 80 ); $content .= ' …'; $content .= __( 'Sorry, more of this content is only available for logged users.', FB_TEXTDOMAIN ); return $content; } } add_action( 'the_content', 'content_only4logged_in' );
有关帖子 http:上的更多可能性和信息://wpengineer.com/2046/control-the-wordpress-content-via-user-or-time/
Display Specific Content only for logged in users
Tested on: Wordpress 3.0.1
function content_only4logged_in($content) { // ALL LOGGED IN USERS if ( is_user_logged_in() && !is_null($content) && !is_feed() ) { return $content; } else { $content = wp_html_excerpt( $content, 80 ); $content .= ' …'; $content .= __( 'Sorry, more of this content is only available for logged users.', FB_TEXTDOMAIN ); return $content; } } add_action( 'the_content', 'content_only4logged_in' );
more possibilities and informations on the post http://wpengineer.com/2046/control-the-wordpress-content-via-userrights-or-time/
-
我无法显示未登录用户的已更改内容...第一部分工作正常,但是该用户未登录且页面被标记为私有,我只能使用常规404吗?I can't get this to display altered content for non-logged in users... the first part works fine, but it the user is not logged in and the page is marked private, I just get served the regular 404?
- 0
- 2011-02-09
- gillespieza
-
- 2010-09-30
有条件地加载脚本
这里是仅当存在特定的短代码或窗口小部件时才加载脚本的方法. 来源:仅当存在特定的短代码或窗口小部件时才加载脚本
function has_my_shortcode($posts) { if ( empty($posts) ) return $posts; $found = false; foreach ($posts as $post) { if ( stripos($post->post_content, '[my_shortcode') ) $found = true; break; } if ($found){ $urljs = get_bloginfo( 'template_directory' ).IMP_JS; wp_register_script('my_script', $urljs.'myscript.js' ); wp_print_scripts('my_script'); } return $posts; } add_action('the_posts', 'has_my_shortcode');
这是仅在存在特定小部件的情况下加载脚本的方法
要在仅加载窗口小部件的页面中加载脚本,则必须在窗口小部件类中添加is_active_widget()代码.例如,请参阅默认的最近评论小部件(wp-includes/default-widgets.php,第602行):
class WP_Widget_Recent_Comments extends WP_Widget { function WP_Widget_Recent_Comments() { $widget_ops = array('classname' => 'widget_recent_comments', 'description' => __( 'The most recent comments' ) ); $this->WP_Widget('recent-comments', __('Recent Comments'), $widget_ops); $this->alt_option_name = 'widget_recent_comments'; if ( is_active_widget(false, false, $this->id_base) ) add_action( 'wp_head', array(&$this, 'recent_comments_style') ); add_action( 'comment_post', array(&$this, 'flush_widget_cache') ); add_action( 'transition_comment_status', array(&$this, 'flush_widget_cache') ); }
Loading scripts conditionally
Here is a way to load scripts only if a particular shortcode or widget is present. source: Loading scripts only if a particular shortcode or widget is present
function has_my_shortcode($posts) { if ( empty($posts) ) return $posts; $found = false; foreach ($posts as $post) { if ( stripos($post->post_content, '[my_shortcode') ) $found = true; break; } if ($found){ $urljs = get_bloginfo( 'template_directory' ).IMP_JS; wp_register_script('my_script', $urljs.'myscript.js' ); wp_print_scripts('my_script'); } return $posts; } add_action('the_posts', 'has_my_shortcode');
And here is how to load scripts only if a certain widget is present
To load the script in the page where the widget is loaded only, you will have to add the is_active_widget() code, in you widget class. E.g., see the default recent comments widget (wp-includes/default-widgets.php, line 602):
class WP_Widget_Recent_Comments extends WP_Widget { function WP_Widget_Recent_Comments() { $widget_ops = array('classname' => 'widget_recent_comments', 'description' => __( 'The most recent comments' ) ); $this->WP_Widget('recent-comments', __('Recent Comments'), $widget_ops); $this->alt_option_name = 'widget_recent_comments'; if ( is_active_widget(false, false, $this->id_base) ) add_action( 'wp_head', array(&$this, 'recent_comments_style') ); add_action( 'comment_post', array(&$this, 'flush_widget_cache') ); add_action( 'transition_comment_status', array(&$this, 'flush_widget_cache') ); }
-
- 2010-11-10
自定义仪表板CSS
/* Change WordPress dashboard CSS */ function custom_admin_styles() { echo '<style type="text/css">#wphead{background:#069}</style>'; } add_action('admin_head', 'custom_admin_styles');
您可以在标签之间的CSS上添加任何更改.
Custom Dashboard CSS
/* Change WordPress dashboard CSS */ function custom_admin_styles() { echo '<style type="text/css">#wphead{background:#069}</style>'; } add_action('admin_head', 'custom_admin_styles');
You can add any changes to the css between the tags.
-
- 2010-12-03
删除私有和受保护的前缀
此功能删除了" Privite:"标记为私人的帖子和页面的前缀.对于仅对登录的用户或组可见的内容有用.
function the_title_trim($title) { $title = attribute_escape($title); $findthese = array( '#Protected:#', '#Private:#' ); $replacewith = array( '', // What to replace "Protected:" with '' // What to replace "Private:" with ); $title = preg_replace($findthese, $replacewith, $title); return $title; } add_filter('the_title', 'the_title_trim');
编辑::已更新,其中也删除了受保护的内容.
Remove Private and Protected Prefix
This function removes the "Privite:" prefix from posts and pages marked private. Useful for content only visible to logged in users or groups.
function the_title_trim($title) { $title = attribute_escape($title); $findthese = array( '#Protected:#', '#Private:#' ); $replacewith = array( '', // What to replace "Protected:" with '' // What to replace "Private:" with ); $title = preg_replace($findthese, $replacewith, $title); return $title; } add_filter('the_title', 'the_title_trim');
EDIT: Updated to include the removal of Protected: as well.
-
- 2011-01-02
自定义摘录长度
function excerpt($num) { $limit = $num+1; $excerpt = explode(' ', get_the_excerpt(), $limit); array_pop($excerpt); $excerpt = implode(" ",$excerpt)."... (<a href='" .get_permalink($post->ID) ." '>Read more</a>)"; echo $excerpt; }
通过编写主题来限制显示摘录的长度:excerpt('20');
示例:
<?php excerpt('22'); ?>
这将摘录限制为22个字符.摘录将与
... (Read More)
Custom excerpt length
function excerpt($num) { $limit = $num+1; $excerpt = explode(' ', get_the_excerpt(), $limit); array_pop($excerpt); $excerpt = implode(" ",$excerpt)."... (<a href='" .get_permalink($post->ID) ." '>Read more</a>)"; echo $excerpt; }
Limit the length of the displayed excerpt by writing in the theme: excerpt('20');
Example:
<?php excerpt('22'); ?>
This will limit the excerpt to 22 characters.The excerpt will be interupted with
... (Read More)
-
- 2011-02-21
将父页面标签添加到body_class
/*************************************************************** * Function body_class_section * Add the top level page to the body class for coloured sections ***************************************************************/ add_filter('body_class','body_class_section'); function body_class_section($classes) { global $wpdb, $post; if (is_page()) { if ($post->post_parent) { $parent = end(get_post_ancestors($current_page_id)); } else { $parent = $post->ID; } $post_data = get_post($parent, ARRAY_A); $classes[] = 'section-' . $post_data['post_name']; } return $classes; }
此过滤器基于当前页面的最高级别父级添加唯一的正文类.我将其用于网站各部分具有特定颜色或布局的网站.它最适合基于页面的网站. CSS示例:
.section-about { background: red; } .section-portfolio { background: blue; }
您的主题还必须使用body_class函数.
修复嵌入的Flash对象
/*************************************************************** * Function my_oembed_wmode * Fix oEmbed window mode for flash objects ***************************************************************/ add_filter('embed_oembed_html', 'my_oembed_wmode', 1); function my_oembed_wmode( $embed ) { if ( strpos( $embed, '<param' ) !== false ) { $embed = str_replace( '<embed', '<embed wmode="transparent" ', $embed ); $embed = preg_replace( '/param>/', 'param><param name="wmode" value="transparent" />', $embed, 1); } return $embed; }
过去,oEmbed Flash对象与下拉导航菜单发生冲突,我遇到了问题.该过滤器通过向嵌入内容添加透明窗口模式来解决该问题.
从"管理员"页面列表中删除"评论"列
/*************************************************************** * Function custom_pages_columns * Remove "comments" from pages overview (rarely use comments on pages) ***************************************************************/ add_filter('manage_pages_columns', 'custom_pages_columns'); function custom_pages_columns($defaults) { unset($defaults['comments']); return $defaults; }
我几乎不使用页面注释,这有助于使WordPress仪表板中的内容保持整洁.
Add parent page slug to body_class
/*************************************************************** * Function body_class_section * Add the top level page to the body class for coloured sections ***************************************************************/ add_filter('body_class','body_class_section'); function body_class_section($classes) { global $wpdb, $post; if (is_page()) { if ($post->post_parent) { $parent = end(get_post_ancestors($current_page_id)); } else { $parent = $post->ID; } $post_data = get_post($parent, ARRAY_A); $classes[] = 'section-' . $post_data['post_name']; } return $classes; }
This filter adds a unique body class based on the highest level parent of the current page. I use this for sites that have specific colours or layouts for each section of the site. It works best with sites based around pages. CSS examples:
.section-about { background: red; } .section-portfolio { background: blue; }
Your theme must also make use of the body_class function.
Fix oEmbed flash objects
/*************************************************************** * Function my_oembed_wmode * Fix oEmbed window mode for flash objects ***************************************************************/ add_filter('embed_oembed_html', 'my_oembed_wmode', 1); function my_oembed_wmode( $embed ) { if ( strpos( $embed, '<param' ) !== false ) { $embed = str_replace( '<embed', '<embed wmode="transparent" ', $embed ); $embed = preg_replace( '/param>/', 'param><param name="wmode" value="transparent" />', $embed, 1); } return $embed; }
I have had problems in the past where oEmbed Flash objects collide with drop down navigation menus. This filter fixes that problem by adding a transparent window mode to the embeds.
Remove the "comments" column from Admin page list
/*************************************************************** * Function custom_pages_columns * Remove "comments" from pages overview (rarely use comments on pages) ***************************************************************/ add_filter('manage_pages_columns', 'custom_pages_columns'); function custom_pages_columns($defaults) { unset($defaults['comments']); return $defaults; }
I hardly ever make use of commenting on pages and this helps keep things tidy in the WordPress dashboard.
-
- 2010-09-10
启用数字分页
测试于: Wordpress 3.0.1
/* Numeric Pagination ********************************************/ function numeric_pagination ($pageCount = 9, $query = null) { if ($query == null) { global $wp_query; $query = $wp_query; } if ($query->max_num_pages <= 1) { return; } $pageStart = 1; $paged = $query->query_vars['paged']; // set current page if on the first page if ($paged == null) { $paged = 1; } // work out if page start is halfway through the current visible pages and if so move it accordingly if ($paged > floor($pageCount / 2)) { $pageStart = $paged - floor($pageCount / 2); } if ($pageStart < 1) { $pageStart = 1; } // make sure page start is if ($pageStart + $pageCount > $query->max_num_pages) { $pageCount = $query->max_num_pages - $pageStart; } ?> <div id="archive_pagination"> <?php if ($paged != 1) { ?> <a href="<?php echo get_pagenum_link(1); ?>" class="numbered page-number-first"><span>‹ <?php _e('<< First', 'global'); ?></span></a> <?php } // first page is not visible... if ($pageStart > 1) { //echo 'previous'; } for ($p = $pageStart; $p <= $pageStart + $pageCount; $p ++) { if ($p == $paged) { ?> <span class="numbered page-number-<?php echo $p; ?> current-numeric-page"><?php echo $p; ?></span> <?php } else { ?> <a href="<?php echo get_pagenum_link($p); ?>" class="numbered page-number-<?php echo $p; ?>"><span><?php echo $p; ?></span></a> <?php } } // last page is not visible if ($pageStart + $pageCount < $query->max_num_pages) { //echo "last"; } if ($paged != $query->max_num_pages) { ?> <a href="<?php echo get_pagenum_link($query->max_num_pages); ?>" class="numbered page-number-last"><span><?php _e('>> Last', 'global'); ?> ›</span></a> <?php } ?> </div>
Enable Numeric Pagination
Tested on: Wordpress 3.0.1
/* Numeric Pagination ********************************************/ function numeric_pagination ($pageCount = 9, $query = null) { if ($query == null) { global $wp_query; $query = $wp_query; } if ($query->max_num_pages <= 1) { return; } $pageStart = 1; $paged = $query->query_vars['paged']; // set current page if on the first page if ($paged == null) { $paged = 1; } // work out if page start is halfway through the current visible pages and if so move it accordingly if ($paged > floor($pageCount / 2)) { $pageStart = $paged - floor($pageCount / 2); } if ($pageStart < 1) { $pageStart = 1; } // make sure page start is if ($pageStart + $pageCount > $query->max_num_pages) { $pageCount = $query->max_num_pages - $pageStart; } ?> <div id="archive_pagination"> <?php if ($paged != 1) { ?> <a href="<?php echo get_pagenum_link(1); ?>" class="numbered page-number-first"><span>‹ <?php _e('<< First', 'global'); ?></span></a> <?php } // first page is not visible... if ($pageStart > 1) { //echo 'previous'; } for ($p = $pageStart; $p <= $pageStart + $pageCount; $p ++) { if ($p == $paged) { ?> <span class="numbered page-number-<?php echo $p; ?> current-numeric-page"><?php echo $p; ?></span> <?php } else { ?> <a href="<?php echo get_pagenum_link($p); ?>" class="numbered page-number-<?php echo $p; ?>"><span><?php echo $p; ?></span></a> <?php } } // last page is not visible if ($pageStart + $pageCount < $query->max_num_pages) { //echo "last"; } if ($paged != $query->max_num_pages) { ?> <a href="<?php echo get_pagenum_link($query->max_num_pages); ?>" class="numbered page-number-last"><span><?php _e('>> Last', 'global'); ?> ›</span></a> <?php } ?> </div>
-
WordPress中已经有一个函数可以进行数字分页,请参阅http://codex.wordpress.org/Function_Reference/paginate_linksThere's a function in WordPress for doing numeric pagination already, see http://codex.wordpress.org/Function_Reference/paginate_links
- 11
- 2010-11-11
- t31os
-
- 2010-09-28
通过删除WWW来缩短您的短链接
测试于: Wordpress 3.0.1
如果您在域中包含
www.
,请缩短您的短链接.通过 scratch99.com :add_filter('get_shortlink','sjc_alter_shortlink'); function sjc_alter_shortlink($shortlink) { $shortlink = preg_replace('/^(https?:\/\/)?(www\.)/','$1',$shortlink); return $shortlink; }
Make your Shortlinks Shorter by Removing WWW
Tested on: Wordpress 3.0.1
Make your shortlinks shorter if you include
www.
in your domain. Via scratch99.com:add_filter('get_shortlink','sjc_alter_shortlink'); function sjc_alter_shortlink($shortlink) { $shortlink = preg_replace('/^(https?:\/\/)?(www\.)/','$1',$shortlink); return $shortlink; }
-
应该添加检查以确保字符串" www.".仅当在原始URL的域部分的开头找到它时,才将其删除.如果已在owww.com(实际上似乎在运行WordPress)之类的域上使用过幼稚地将其替换为URL中的任何位置,将导致错误.A check should be added to make sure the string "www." is only removed if it is found at the very beginning of the domain part of the original URL. Naively replacing it anywhere in the URL will lead to bugs if it had been used on a domain like owww.com (which actually appears to be running WordPress) :)
- 3
- 2012-05-28
- Ingve
-
@Ingve我已修复它,现在它将仅删除初始www@Ingve I fixed it, now it will remove only the initial www
- 0
- 2014-01-11
- fregante
-
- 2010-11-04
检查帖子是否包含嵌入内容.
检查帖子是否包含嵌入的内容,是否使用当前帖子的ID在循环内工作,或者可以传递ID以确定要检查嵌入内容的帖子.
function has_embed( $post_id = false ) { if( !$post_id ) $post_id = get_the_ID(); else $post_id = absint( $post_id ); if( !$post_id ) return false; $post_meta = get_post_custom_keys( $post_id ); $post_meta = array_map( 'trim' , $post_meta ); foreach( $post_meta as $meta ) { if( '_oembed' != substr( $meta , 0 , 7 ) ) continue; return true; } return false; }
您将以与检查帖子是否带有标签相同的方式使用该功能.
if( has_embed() ) { // do whatever }
如果发现嵌入,函数将返回true,失败则返回false.
Check if a post has embedded content.
Check if a post has embedded content, works inside the loop using the current post's ID, or alternatively can be passed an ID to determine the post to check for embedded content.
function has_embed( $post_id = false ) { if( !$post_id ) $post_id = get_the_ID(); else $post_id = absint( $post_id ); if( !$post_id ) return false; $post_meta = get_post_custom_keys( $post_id ); $post_meta = array_map( 'trim' , $post_meta ); foreach( $post_meta as $meta ) { if( '_oembed' != substr( $meta , 0 , 7 ) ) continue; return true; } return false; }
You'd use the function in the same way you check if a post has a tag..
if( has_embed() ) { // do whatever }
Function returns true if an embed is found, false on fail.
-
有趣,但我想知道,您为什么要使用它?它有什么样的应用程序?Interesting, but I'm wondering, why would you use it? What kind of applications does it have?
- 0
- 2010-12-05
- matt
-
检查帖子是否在显示摘录的页面上嵌入是一种用法(这是我为其编写的原始用例).其他可能的用例是编写自己的主题模板并希望根据帖子(或类型)是否具有嵌入内容而提供功能的用户,而无需对"the_content"或众多"get_post_custom_keys"调用进行过滤.Checking if a post has an embed on a page that displays excerpts would be one use(and it's the original use case i wrote it for). Other possible use cases would be with users who write their own theme templates and want to provide functionality dependant on whether a post(or type) has embedded content, without the need for a filter on `the_content` or numerous `get_post_custom_keys` calls.
- 0
- 2010-12-05
- t31os
-
- 2010-11-14
在首页上显示来自不同自定义帖子类型的帖子
通过将帖子底部的以下代码放到functions.php文件中,您可以让wordpress自动显示来自您创建的不同自定义帖子类型的帖子.当前默认情况下,wordpress仅显示属于默认"posts"的帖子.帖子类型.
在下面提供的示例中,您将需要更改以下部分:
$query->set( 'post_type', array('post', 'page', 'services', 'attachment'));
使用您想要包含在首页帖子列表结果中的自定义帖子类型.在这种情况下,我们要求wordpress将属于默认"post"信息的所有帖子返回给我们.和"页面"post_type,然后要求wordpress也包括我们为"服务"创建的自定义帖子类型.最后是默认的wordpress发布类型" attachment"这只是意味着只要将任何内容添加到媒体库中,它就会自动在首页上显示为单独的条目.
// CUSTOM HOMEPAGE POST LIST INCLUDING DIFFERENT POST_TYPES // make sure to edit the post types you wanted included in the list below add_filter( 'pre_get_posts', 'my_homepage_post_list' ); function my_homepage_post_list ( $query ) { if ( is_home() && false == $query->query_vars['suppress_filters'] ) $query->set( 'post_type', array('post', 'page', 'services', 'attachment')); return $query; }
您还可以在不同位置使用此自定义查询,例如通过类似这样的自定义Feed中
if (( is_home() && false == $query->query_vars['suppress_filters'] ) || is_feed())
Display Posts from Different Custom Post Types on homepage
By dropping the following code on the bottom of this post into your functions.php file you can get wordpress to automatically display posts from different custom post types you have created. Currently by default wordpress only display posts which belong to the default "posts" post type.
In the example provided below you will need to change the section which calls:
$query->set( 'post_type', array('post', 'page', 'services', 'attachment'));
With your own custom post types which you would like to include in the homepage post list results. In this case we are asking wordpress to return to us all posts belonging to the default "post" and "page" post_type then asking wordpress to also include the custom post type we created for "services" and finally the default wordpress post type of "attachment" which just means that anytime something is added to the media library it will automatically get displayed on the homepage as a separate entry.
// CUSTOM HOMEPAGE POST LIST INCLUDING DIFFERENT POST_TYPES // make sure to edit the post types you wanted included in the list below add_filter( 'pre_get_posts', 'my_homepage_post_list' ); function my_homepage_post_list ( $query ) { if ( is_home() && false == $query->query_vars['suppress_filters'] ) $query->set( 'post_type', array('post', 'page', 'services', 'attachment')); return $query; }
You can also utilize this custom query in different locations, such as in a custom feed through something like this
if (( is_home() && false == $query->query_vars['suppress_filters'] ) || is_feed())
-
- 2010-12-22
删除默认字段联系信息用户个人资料,并将其替换为更有用的内容
上面已经提到了此功能的第二部分,但尚未删除默认字段-AIM,Yahoo IM和Jabber/Google Talk-
function update_contact_methods( $contactmethods ) { // Remove annoying and unwanted default fields unset($contactmethods['aim']); unset($contactmethods['jabber']); unset($contactmethods['yim']); // Add new fields $contactmethods['phone'] = 'Phone'; $contactmethods['mobile'] = 'Mobile'; $contactmethods['address'] = 'Address'; return $contactmethods; } add_filter('user_contactmethods', 'update_contact_methods');
当然,您可以在"添加新字段"下添加任意数量的字段(请参见本主题前面的示例)
Remove default fields contact info user profile and replace them with something more usable
The second part of this function has already been mentioned above, but removing the default fields - AIM, Yahoo IM and Jabber/Google Talk - not yet:
function update_contact_methods( $contactmethods ) { // Remove annoying and unwanted default fields unset($contactmethods['aim']); unset($contactmethods['jabber']); unset($contactmethods['yim']); // Add new fields $contactmethods['phone'] = 'Phone'; $contactmethods['mobile'] = 'Mobile'; $contactmethods['address'] = 'Address'; return $contactmethods; } add_filter('user_contactmethods', 'update_contact_methods');
Of course you can add as many fields as you want (see previous examples earlier in this thread) under "Add new fields"
-
- 2011-11-10
预填充帖子类型
这里是该收藏品之一.
//////////////////////////////////////////////////////////////////////////////////// // This auto populates post types and posts. /////////////////////////////////////////////////////////////////////////////////// add_filter( 'default_content', 'my_editor_content' ); function my_editor_content( $content ) { global $post_type; switch( $post_type ) { case 'your_post_type_here': //auto populate $content = 'The content you want to pre-populate the post type with.'; break; } return $content; }
当您需要一遍又一遍地发布相同信息时,这可能会派上用场.
Pre-populating post types
Here is one for this collection.
//////////////////////////////////////////////////////////////////////////////////// // This auto populates post types and posts. /////////////////////////////////////////////////////////////////////////////////// add_filter( 'default_content', 'my_editor_content' ); function my_editor_content( $content ) { global $post_type; switch( $post_type ) { case 'your_post_type_here': //auto populate $content = 'The content you want to pre-populate the post type with.'; break; } return $content; }
This can come in handy for when you need to post the same info over and over again with slight differences.
-
好一个!我喜欢这个简单的选项.您能否通过显示自动填充自定义字段或其他条件/选项的方法,甚至可能自动插入媒体的方法来扩展此功能?Nice one! I like this simple option. Can you expand this by possible showing ways of automatically populating custom fields or other criteria/options or possibly even the means of auto-inserting media?
- 0
- 2011-11-11
- NetConstructor.com
-
我绝对可以看到对其进行扩展.我还没有真正尝试进一步.I can definitely see about expanding it. I have not really tried taking it further yet.
- 0
- 2011-11-14
- Nicole
-
很想看看扩大这一范围的方法Would love to see ways to expand this
- 0
- 2012-04-11
- JasonDavis
-
- 2010-09-15
自动包含Google Analytics(分析)代码
测试于: Wordpress 3.1 RC3
自WordPress 2.3.0以来,我一直在所有网站上使用此脚本...它只是将标准的Google跟踪脚本添加到页脚中.
// Add Google Analytics Tracking Code function add_google_analytics() { ?> <script type="text/javascript"> var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); </script> <script type="text/javascript"> try { var pageTracker = _gat._getTracker("UA-XXXXXXX-X"); pageTracker._trackPageview(); } catch(err) {}</script> <?php } add_action('wp_footer', 'add_google_analytics');
只需确保将
UA-XXXXXXX-X
替换为您自己的Google跟踪代码...Auto Include Google Analytics Code
Tested on: Wordpress 3.1 RC3
I've been using this script on all of my sites since WordPress 2.3.0 ... it just adds the standard Google tracking scripts to the footer.
// Add Google Analytics Tracking Code function add_google_analytics() { ?> <script type="text/javascript"> var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); </script> <script type="text/javascript"> try { var pageTracker = _gat._getTracker("UA-XXXXXXX-X"); pageTracker._trackPageview(); } catch(err) {}</script> <?php } add_action('wp_footer', 'add_google_analytics');
Just be sure to replace
UA-XXXXXXX-X
with your own Google tracking code...-
感谢您的分享.我也一直在使用此功能,但是我很想知道您是否知道如何修改此功能,以便可以利用广告系列跟踪var功能自动传递特定的标签,帖子类型页面甚至自己发布内容谷歌提供.此外,如果我们想将其添加到所有管理页面的页脚以跟踪管理活动,则需要添加什么内容?thanks for the share. I have been using this one as well but I would be curious to know if you are aware how this can be modified so that specific tags, post type pages or even posts themself can be passed additional values automatically making use of the campaign tracking var capabilities google provides. Additionally, what would need to be added if we wanted to add this to the footer of all admin pages to track admin activity?
- 0
- 2010-09-17
- NetConstructor.com
-
不确定仅由于我还不需要添加广告系列跟踪变量.但是要将相同的脚本添加到管理页面中,您只需使用`add_action('admin_footer','add_google_analytics');`连接到管理页面的页脚即可.Not sure about adding campaign tracking variables only because I haven't had a need for that yet. But to add the same scripts to admin pages, you'd just use `add_action('admin_footer', 'add_google_analytics');` to hook on to the footer of admin pages.
- 1
- 2010-09-17
- EAMann
-
- 2010-09-17
列出所有常量以供参考和调试
测试于: Wordpress 3.0.1
仅当您是登录用户时才会显示信息
if ( is_user_logged_in() ) { print('<pre>'); print_r( @get_defined_constants() ); print('</pre>'); }
此处是带有可选过滤器的版本,该过滤器将部分匹配常量名称和值:
function constants($filter = false) { $constants = get_defined_constants(); if( $filter ) { $temp = array(); foreach ( $constants as $key => $constant ) if( false !== stripos( $key, $filter ) || false !== stripos( $constant, $filter ) ) $temp[$key] = $constant; $constants = $temp; } ksort( $constants ); var_dump( $constants ); }
List all constants for information and debugging
Tested on: Wordpress 3.0.1
Will only display the information if you are a logged in user
if ( is_user_logged_in() ) { print('<pre>'); print_r( @get_defined_constants() ); print('</pre>'); }
Here is version with optional filter that will partially match constant names and values:
function constants($filter = false) { $constants = get_defined_constants(); if( $filter ) { $temp = array(); foreach ( $constants as $key => $constant ) if( false !== stripos( $key, $filter ) || false !== stripos( $constant, $filter ) ) $temp[$key] = $constant; $constants = $temp; } ksort( $constants ); var_dump( $constants ); }
-
-
因此,只要有可用的新功能,它就会自动更新您的所有插件?so this automatically updates any/all of your plugins whenever something new is available?
- 0
- 2010-11-05
- NetConstructor.com
-
不,您只需要ftp登录即可在本地更新您的核心或插件Nope, you just don't need a ftp login to update your core or plugins locally
- 0
- 2010-11-09
- Horttcore
-
-
- 2010-12-21
更改默认的作者子弹
将其放入您的函数中以将默认的Author Slug更改为所需的内容,
只需将"卖家"更改为所需的子弹.// Change URL Slug from Author to Sellers function new_author_base() { global $wp_rewrite; $author_slug = 'sellers'; $wp_rewrite->author_base = $author_slug; } add_action('init', 'new_author_base');
Change default Author Slug
Put this in your functions to change the default Author Slug to whatever you want,
just change the "sellers" to the slug you want.// Change URL Slug from Author to Sellers function new_author_base() { global $wp_rewrite; $author_slug = 'sellers'; $wp_rewrite->author_base = $author_slug; } add_action('init', 'new_author_base');
-
但是,您不想在每次页面加载时都运行该代码.You'd not want to run that code on every page load however.
- 4
- 2010-12-21
- t31os
-
是的,每次加载时刷新角色可以为您节省很多卖家.:)最好使用插件[Edit Author Slug](http://brandonallen.org/wordpress/plugins/edit-author-slug/).Yeah, flushing roles on every load saves you a lot of sellers. :) Better use the plugin [Edit Author Slug](http://brandonallen.org/wordpress/plugins/edit-author-slug/).
- 0
- 2010-12-22
- fuxia
-
我已经更新了功能!!!感谢您的输入:)I have update the function!!! Thanks for your input:)
- 0
- 2011-01-12
- Philip
-
- 2011-01-02
在所见即所得编辑器中添加"下一页"按钮
add_filter('mce_buttons','wysiwyg_editor'); function wysiwyg_editor($mce_buttons) { $pos = array_search('wp_more',$mce_buttons,true); if ($pos !== false) { $tmp_buttons = array_slice($mce_buttons, 0, $pos+1); $tmp_buttons[] = 'wp_page'; $mce_buttons = array_merge($tmp_buttons, array_slice($mce_buttons, $pos+1)); } return $mce_buttons; }
Add "Next-page"-button in WYSIYG-editor
add_filter('mce_buttons','wysiwyg_editor'); function wysiwyg_editor($mce_buttons) { $pos = array_search('wp_more',$mce_buttons,true); if ($pos !== false) { $tmp_buttons = array_slice($mce_buttons, 0, $pos+1); $tmp_buttons[] = 'wp_page'; $mce_buttons = array_merge($tmp_buttons, array_slice($mce_buttons, $pos+1)); } return $mce_buttons; }
-
- 2011-01-04
向TinyMCE编辑器添加自定义样式
有时,用户和客户端对于其内容在编辑器中的显示方式以及在前端中的显示方式感到困惑.将主要样式表中的几行相关代码复制到新的tinymce.css中会很有帮助:
function custom_mce_css($wp) { return $wp .= ',' . get_bloginfo('stylesheet_directory') . '/css/tinymce.css'; } add_filter( 'mce_css', 'custom_mce_css' );
Add custom styles to TinyMCE editor
Sometimes users and clients get confused about how their content is displayed in the editor versus how it is displayed on the front-end. Copying just a few relevant lines from your main stylesheet into your new tinymce.css can help a lot:
function custom_mce_css($wp) { return $wp .= ',' . get_bloginfo('stylesheet_directory') . '/css/tinymce.css'; } add_filter( 'mce_css', 'custom_mce_css' );
-
真好我刚刚发现Seamus Leahy有一个解决方案,可以通过向tinymce添加body类来进一步扩展所有这一步.http://www.digwp.com/2010/11/actual-wysiwygNice. Ive just discoverd there is a solution by Seamus Leahy that extends all this one step further by adding a body class to tinymce. http://www.digwp.com/2010/11/actual-wysiwyg
- 0
- 2011-01-20
- Michal Mau
-
核心和编辑器样式是否已涵盖这些内容?Isn't this already covered by core & editor styles?
- 0
- 2011-02-01
- kaiser
-
我更喜欢一口气为前端和TinyMCE创建样式表.然后,我使用add_editor_style()函数的核心功能包括样式表,并确保在TinyMCE加载时加载该样式表.有关法典的文章,位于http://codex.wordpress.org/Function_Reference/add_editor_styleI prefer to create a stylesheet for both front-end and TinyMCE in one go. Then I use core functionality of the add_editor_style() function to include the stylesheet and ensure it's loaded when TinyMCE loads. Codex article at http://codex.wordpress.org/Function_Reference/add_editor_style
- 0
- 2011-09-13
- Philip Downer
-
- 2011-06-08
将图形和插图标题用作标题
测试于: WordPress 3.1.3
(向WP Engineer致谢: http://wpengineer.com/917/filter-caption- shortcode-in-wordpress/)
function mytheme_caption( $attr, $content = null ) { $output = apply_filters( 'img_caption_shortcode', '', $attr, $content ); if ( $output != '' ) return $output; extract( shortcode_atts ( array( 'id' => '', 'align' => 'alignnone', 'width'=> '', 'caption' => '' ), $attr ) ); if ( 1 > (int) $width || empty( $caption ) ) return $content; if ( $id ) $id = 'id="' . $id . '" '; return '<figure ' . $id . 'class="wp-caption ' . $align . '" style="width: ' . $width . 'px">' . do_shortcode( $content ) . '<figcaption class="wp-caption-text">' . $caption . '</figcaption></figure>'; } add_shortcode( 'wp_caption', 'mytheme_caption' ); add_shortcode( 'caption', 'mytheme_caption' );
Use figure and figcaption for captions
Tested on: WordPress 3.1.3
(Credits to WP Engineer: http://wpengineer.com/917/filter-caption-shortcode-in-wordpress/)
function mytheme_caption( $attr, $content = null ) { $output = apply_filters( 'img_caption_shortcode', '', $attr, $content ); if ( $output != '' ) return $output; extract( shortcode_atts ( array( 'id' => '', 'align' => 'alignnone', 'width'=> '', 'caption' => '' ), $attr ) ); if ( 1 > (int) $width || empty( $caption ) ) return $content; if ( $id ) $id = 'id="' . $id . '" '; return '<figure ' . $id . 'class="wp-caption ' . $align . '" style="width: ' . $width . 'px">' . do_shortcode( $content ) . '<figcaption class="wp-caption-text">' . $caption . '</figcaption></figure>'; } add_shortcode( 'wp_caption', 'mytheme_caption' ); add_shortcode( 'caption', 'mytheme_caption' );
-
- 2012-01-08
以下是一些不错的短代码供您使用:
1.易于添加的Twitter和Facebook共享按钮简码
function shreplz() { return ' <div class="sharebox"> <div class="twittme"><a href="https://twitter.com/share" class="twitter-share-button" data-count="horizontal">Tweet</a><script type="text/javascript" src="//platform.twitter.com/widgets.js"></script></div> <div class="shareface"><a name="fb_share"></a> <script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share" type="text/javascript"></script></div> <br style="clear: left;" /> </div> '; } add_shortcode('sharethis', 'shreplz'); // How to use: [sharethis]
2.使用WordPress API短代码轻松进行远程站点快照
function wpr_snap($atts, $content = null) { extract(shortcode_atts(array( "snap" => 'http://s.wordpress.com/mshots/v1/', "url" => 'http://www.sagive.co.il', "alt" => 'My image', "w" => '400', // width "h" => '300' // height ), $atts)); $img = '<img src="' . $snap . '' . urlencode($url) . '?w=' . $w . '&h=' . $h . '" alt="' . $alt . '"/>'; return $img; } add_shortcode("snap", "wpr_snap"); // How to use: [snap url="http://www.example.com" alt="Cool Site!" w="300px" h="200px"]
3.易于使用和嵌入iFrame简码
function GenerateIframe( $atts ) { extract( shortcode_atts( array( 'href' => 'http://the-url', 'height' => '550px', 'width' => '600px', ), $atts ) ); return '<iframe src="'.$href.'" width="'.$width.'" height="'.$height.'"> <p>Your Browser does not support Iframes.</p></iframe>'; } add_shortcode('iframe', 'GenerateIframe'); // How to use: [iframe href="http://www.exmaple.com" height="480" width="640"]
4.包含简短代码的易于包含的远程文件/文档
function getfile_content( $atts ) { extract( shortcode_atts( array( 'fileurl' => '' ), $atts ) ); if ($fileurl!='') return @file_get_contents($fileurl); } add_shortcode( 'getfile', 'getfile_content' ); // How to use: [getfile fileurl="http://www.exmaple.com/somepage.html"]
. 以下是与评论相关的摘要:
1.关闭全局注释功能
function closeCommentsGlobaly($data) { return false; } add_filter('comments_number', 'closeCommentsGlobaly'); add_filter('comments_open', 'closeCommentsGlobaly');
2.为管理员提供不同的CSS类,以获取管理员的评论
if (1 == $comment->user_id) echo 'siteadmin'; // Pick your class here
3.包含评论数据列表的非常酷的功能-gr8用于自定义锁定页面
$comments = get_comments( array( 'number' => 10, // How many comments 'status' => 'approve' // Type of comments ) ); foreach($comments as $eachComment){ // Collect the data and assign it $commentID = comment_ID; $commentAuthorEmail = $eachComment->comment_author_email; $commentPostId = $eachComment->comment_post_ID; $commentPostTitle = get_the_title( $commentPostId ); $commentPostUrl = get_permalink( $commentPostId ); $comment_sidebarnumber = get_comments_number( $commentPostId ); global $wpdb; $userCommentCount = $wpdb->get_var('SELECT COUNT('.$commentID.') FROM ' . $wpdb->comments. ' WHERE comment_author_email = "' . $commentAuthorEmail . '"'); echo '<div style="border: 1px solid #ccc; padding: 10px;">'; echo '<ul style="margin: 0px;">'; echo '<li>Name: '. $eachComment->comment_author .'</li>'; echo '<li>Commented about: <a href="'.$commentPostUrl.'">'. $commentPostTitle .'</a></li>'; echo '<li>Commented On: '. $eachComment->comment_date .'</li>'; echo '<li>Commneter Site: '. $eachComment->comment_author_email .'</</li>'; echo '<li>Commenter Email: '. $eachComment->comment_author_email .'</</li>'; echo '<li>This Commenter'. $eachComment->comment_author .' Commented '. $userCommentCount .' on your site</</li>'; echo '</ul>'; echo '<p style="padding: 10px;"><strong>'. $eachComment->comment_author .' wrote</strong>: '. $eachComment->comment_content .'</p>'; echo '</div>'; }
Here are some nice shortcodes for you to use:
1. Easy-to-add Twitter and Facebook share button shortcode
function shreplz() { return ' <div class="sharebox"> <div class="twittme"><a href="https://twitter.com/share" class="twitter-share-button" data-count="horizontal">Tweet</a><script type="text/javascript" src="//platform.twitter.com/widgets.js"></script></div> <div class="shareface"><a name="fb_share"></a> <script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share" type="text/javascript"></script></div> <br style="clear: left;" /> </div> '; } add_shortcode('sharethis', 'shreplz'); // How to use: [sharethis]
2. Easy remote site snapshot using WordPress API shortcode
function wpr_snap($atts, $content = null) { extract(shortcode_atts(array( "snap" => 'http://s.wordpress.com/mshots/v1/', "url" => 'http://www.sagive.co.il', "alt" => 'My image', "w" => '400', // width "h" => '300' // height ), $atts)); $img = '<img src="' . $snap . '' . urlencode($url) . '?w=' . $w . '&h=' . $h . '" alt="' . $alt . '"/>'; return $img; } add_shortcode("snap", "wpr_snap"); // How to use: [snap url="http://www.example.com" alt="Cool Site!" w="300px" h="200px"]
3. Easy to use & embed iFrame shortcode
function GenerateIframe( $atts ) { extract( shortcode_atts( array( 'href' => 'http://the-url', 'height' => '550px', 'width' => '600px', ), $atts ) ); return '<iframe src="'.$href.'" width="'.$width.'" height="'.$height.'"> <p>Your Browser does not support Iframes.</p></iframe>'; } add_shortcode('iframe', 'GenerateIframe'); // How to use: [iframe href="http://www.exmaple.com" height="480" width="640"]
4. Easy-to-include remote file / doc with shortcode
function getfile_content( $atts ) { extract( shortcode_atts( array( 'fileurl' => '' ), $atts ) ); if ($fileurl!='') return @file_get_contents($fileurl); } add_shortcode( 'getfile', 'getfile_content' ); // How to use: [getfile fileurl="http://www.exmaple.com/somepage.html"]
. Here are some comments related snippets:
1. Close the ability to comment globally
function closeCommentsGlobaly($data) { return false; } add_filter('comments_number', 'closeCommentsGlobaly'); add_filter('comments_open', 'closeCommentsGlobaly');
2. Give the administrator a different CSS class for the administrator's comments
if (1 == $comment->user_id) echo 'siteadmin'; // Pick your class here
3. A really cool rich with a data list of comments - gr8 for custom locked page
$comments = get_comments( array( 'number' => 10, // How many comments 'status' => 'approve' // Type of comments ) ); foreach($comments as $eachComment){ // Collect the data and assign it $commentID = comment_ID; $commentAuthorEmail = $eachComment->comment_author_email; $commentPostId = $eachComment->comment_post_ID; $commentPostTitle = get_the_title( $commentPostId ); $commentPostUrl = get_permalink( $commentPostId ); $comment_sidebarnumber = get_comments_number( $commentPostId ); global $wpdb; $userCommentCount = $wpdb->get_var('SELECT COUNT('.$commentID.') FROM ' . $wpdb->comments. ' WHERE comment_author_email = "' . $commentAuthorEmail . '"'); echo '<div style="border: 1px solid #ccc; padding: 10px;">'; echo '<ul style="margin: 0px;">'; echo '<li>Name: '. $eachComment->comment_author .'</li>'; echo '<li>Commented about: <a href="'.$commentPostUrl.'">'. $commentPostTitle .'</a></li>'; echo '<li>Commented On: '. $eachComment->comment_date .'</li>'; echo '<li>Commneter Site: '. $eachComment->comment_author_email .'</</li>'; echo '<li>Commenter Email: '. $eachComment->comment_author_email .'</</li>'; echo '<li>This Commenter'. $eachComment->comment_author .' Commented '. $userCommentCount .' on your site</</li>'; echo '</ul>'; echo '<p style="padding: 10px;"><strong>'. $eachComment->comment_author .' wrote</strong>: '. $eachComment->comment_content .'</p>'; echo '</div>'; }
-
- 2010-12-18
为自定义分类法创建条件标签
在此示例中,"学生"是自定义帖子类型,而" stud_cat"是自定义分类法.使用
has_student(null)
作为条件function has_student( $student, $_post = null ) { if ( !empty( $student ) ) return false; if ( $_post ) $_post = get_post( $_post ); else $_post =& $GLOBALS['post']; if ( !$_post ) return false; $r = is_object_in_term( $_post->ID, 'studcat', $student ); if ( is_wp_error( $r ) ) return false; return $r; }
Create a conditional tag for custom taxonomies
In this example, 'student' was a custom post type, and 'stud_cat' was the custom taxonomy. Use
has_student(null)
for the conditionalfunction has_student( $student, $_post = null ) { if ( !empty( $student ) ) return false; if ( $_post ) $_post = get_post( $_post ); else $_post =& $GLOBALS['post']; if ( !$_post ) return false; $r = is_object_in_term( $_post->ID, 'studcat', $student ); if ( is_wp_error( $r ) ) return false; return $r; }
-
我认为现在3.1已经发布了,它已被[`has_term()`](http://codex.wordpress.org/Function_Reference/has_term)取代.I think this gets replaced with [`has_term()`](http://codex.wordpress.org/Function_Reference/has_term) now that 3.1 is released?
- 1
- 2011-02-25
- Rarst
-
- 2010-12-28
使WordPress编辑器允许iFrames
//使TinyMCE允许iframe add_filter('tiny_mce_before_init',create_function('$ a', ''$ a ["extended_valid_elements"]="iframe [id| class| title| style| align| frameborder| height| longdesc| marginheight| marginwidth| name| scrolling| src| width]";返回$ a;'));
Make WordPress Editor Allow iFrames
// make TinyMCE allow iframes add_filter('tiny_mce_before_init', create_function( '$a', '$a["extended_valid_elements"] = "iframe[id|class|title|style|align|frameborder|height|longdesc|marginheight|marginwidth|name|scrolling|src|width]"; return $a;') );
-
- 2011-02-10
在上传时调整大图的大小
图像将根据媒体设置中的大尺寸进行调整.
/**resize on upload to the largest size in media setting */ function replace_uploaded_image($image_data) { // if there is no large image : return if (!isset($image_data['sizes']['large'])) return $image_data; // path to the uploaded image and the large image $upload_dir = wp_upload_dir(); $uploaded_image_location = $upload_dir['basedir'] . '/' .$image_data['file']; $large_image_location = $upload_dir['path'] . '/'.$image_data['sizes']['large']['file']; // delete the uploaded image unlink($uploaded_image_location); // rename the large image rename($large_image_location,$uploaded_image_location); // update image metadata and return them $image_data['width'] = $image_data['sizes']['large']['width']; $image_data['height'] = $image_data['sizes']['large']['height']; unset($image_data['sizes']['large']); return $image_data; } add_filter('wp_generate_attachment_metadata','replace_uploaded_image');
Resize large image on upload
Image will be resize according to the large size in your media settings.
/**resize on upload to the largest size in media setting */ function replace_uploaded_image($image_data) { // if there is no large image : return if (!isset($image_data['sizes']['large'])) return $image_data; // path to the uploaded image and the large image $upload_dir = wp_upload_dir(); $uploaded_image_location = $upload_dir['basedir'] . '/' .$image_data['file']; $large_image_location = $upload_dir['path'] . '/'.$image_data['sizes']['large']['file']; // delete the uploaded image unlink($uploaded_image_location); // rename the large image rename($large_image_location,$uploaded_image_location); // update image metadata and return them $image_data['width'] = $image_data['sizes']['large']['width']; $image_data['height'] = $image_data['sizes']['large']['height']; unset($image_data['sizes']['large']); return $image_data; } add_filter('wp_generate_attachment_metadata','replace_uploaded_image');
-
这是否意味着实际上已替换了原来上传的大文件?我的php不好,但是答案似乎是肯定的?Does this mean that the original large file uploaded is actually replaced? My php is not great, but the answer seems to be yes?
- 0
- 2011-02-20
- davemac
-
@davemac我意识到这已经很老了,但是据我了解的代码,原始图像文件的大小调整为与WordPress设置屏幕中设置的"大"图像大小相同的尺寸.很棒,但是您最终只能得到2张相同大小的图像.我建议手动设置这些值,以使原始图像仅与您在站点上实际使用的最大文件一样大.然后,您将拥有几乎原始的图像,可以在以后使用.@davemac I realise this is very old now, but from what I understand of the code, the original image file is resized to the same dimensions as the 'large' image size set in the WordPress settings screen. Which is great but then you just end up with 2 images of the same size. I'd suggest manually setting the values to make the original image only as big as the largest file you will ever realistically use on your site. Then you have an almost original image to work with in future.
- 0
- 2016-11-25
- Phill Healey
-
- 2011-09-14
简易的WordPress安全修复程序
通过默默无闻的安全性是这里的游戏名称.这些功能可做三件事.
- 从代码中删除版本字符串.没必要告诉人们我们正在运行哪个版本.
- 从管理员登录屏幕中删除所有错误消息(密码错误,用户名不正确等)
-
当管理员发布评论时,将添加一个CSS类.这会删除评论中的管理员名称.
//REMOVE VERSION STRING FROM HEADER remove_action('wp_head', 'wp_generator'); //HIDE LOGIN ERROR MESSAGES (Wrong Password, No Such User etc.) add_filter('login_errors',create_function('$a', "return null;")); // Remove admin name in comments class // Source: http://www.wprecipes.com/wordpress-hack-remove-admin-name-in-comments-class function remove_comment_author_class( $classes ) { foreach( $classes as $key => $class ) { if(strstr($class, "comment-author-")) { unset( $classes[$key] ); } } return $classes; } add_filter( 'comment_class' , 'remove_comment_author_class' );
Easy WordPress Security Fixes
Security through obscurity is the name of the game here. These functions do three different things.
- Remove the version string from the code. No point in telling folks what version we're running.
- Removes any error messages (Wrong Password, No Such User, etc.) from admin login screens
When the admin posts a comment, a CSS class is added. This removes the admin name in comments.
//REMOVE VERSION STRING FROM HEADER remove_action('wp_head', 'wp_generator'); //HIDE LOGIN ERROR MESSAGES (Wrong Password, No Such User etc.) add_filter('login_errors',create_function('$a', "return null;")); // Remove admin name in comments class // Source: http://www.wprecipes.com/wordpress-hack-remove-admin-name-in-comments-class function remove_comment_author_class( $classes ) { foreach( $classes as $key => $class ) { if(strstr($class, "comment-author-")) { unset( $classes[$key] ); } } return $classes; } add_filter( 'comment_class' , 'remove_comment_author_class' );
-
删除Wordpress版本号是不好的做法.始终保持最新的安全修复程序来更新Wordpress更加安全.额外的好处:想要成为脚本小子的人将继续使用旧版本.Removing the Wordpress version number is bad practice. It is much safer to keep your Wordpress updated with the latest security fixes AT ALL TIMES. Added bonus: wanna-be script kiddies will move along to older versions.
- 0
- 2014-01-12
- knutole
-
@knotole,这不是一个坏习惯.您的意见……尽管这很标准.@knotole, it is not bad practice. It is your opinion... albeit this is pretty standard.
- 2
- 2014-10-20
- Jeremy
-
- 2011-09-14
用自定义图像替换默认Gravatar
您需要自定义的只是默认图片的路径.
function custom_gravatar($avatar_defaults) { $logo = get_bloginfo('template_directory') . '/images/icons/gravatar_logo.jpg'; //Change to whatever path you like. $avatar_defaults[$logo] = get_bloginfo('name'); return $avatar_defaults; }//END FUNCTION add_filter( 'avatar_defaults', 'custom_gravatar' );
Replace Default Gravatar with Custom Image
All you'll need to customize is the path to your default image.
function custom_gravatar($avatar_defaults) { $logo = get_bloginfo('template_directory') . '/images/icons/gravatar_logo.jpg'; //Change to whatever path you like. $avatar_defaults[$logo] = get_bloginfo('name'); return $avatar_defaults; }//END FUNCTION add_filter( 'avatar_defaults', 'custom_gravatar' );
-
- 2011-10-13
显示包含的模板文件
在显示页面时显示包含模板文件和get_template_part文件的内嵌注释.方便进行多部分模板故障排除.
add_action('all','template_snoop'); function template_snoop(){ $args = func_get_args(); if( !is_admin() and $args[0] ){ if( $args[0] == 'template_include' ) { echo "<!-- Base Template: {$args[1]} -->\n"; } elseif( strpos($args[0],'get_template_part_') === 0 ) { global $last_template_snoop; if( $last_template_snoop ) echo "\n\n<!-- End Template Part: {$last_template_snoop} -->"; $tpl = rtrim(join('-', array_slice($args,1)),'-').'.php'; echo "\n<!-- Template Part: {$tpl} -->\n\n"; $last_template_snoop = $tpl; } } }
Show template files being included
Display inline comment with Template File and get_template_part files being included when rendering pages. Handy for troubleshooting multipart templates.
add_action('all','template_snoop'); function template_snoop(){ $args = func_get_args(); if( !is_admin() and $args[0] ){ if( $args[0] == 'template_include' ) { echo "<!-- Base Template: {$args[1]} -->\n"; } elseif( strpos($args[0],'get_template_part_') === 0 ) { global $last_template_snoop; if( $last_template_snoop ) echo "\n\n<!-- End Template Part: {$last_template_snoop} -->"; $tpl = rtrim(join('-', array_slice($args,1)),'-').'.php'; echo "\n<!-- Template Part: {$tpl} -->\n\n"; $last_template_snoop = $tpl; } } }
-
- 2011-12-04
在激活主题后自动创建新页面
if (isset($_GET['activated']) && is_admin()){ $new_page_title = 'This is the page title'; $new_page_content = 'This is the page content'; $new_page_template = ''; //ex. template-custom.php. Leave blank if you don't want a custom page template. //don't edit under this line $page_check = get_page_by_title($new_page_title); $new_page = array( 'post_type' => 'page', 'post_title' => $new_page_title, 'post_content' => $new_page_content, 'post_status' => 'publish', 'post_author' => 1, ); if(!isset($page_check->ID)){ $new_page_id = wp_insert_post($new_page); if(!empty($new_page_template)){ update_post_meta($new_page_id,'_wp_page_template', $new_page_template); } }
Automatically create a new page upon activating a theme
if (isset($_GET['activated']) && is_admin()){ $new_page_title = 'This is the page title'; $new_page_content = 'This is the page content'; $new_page_template = ''; //ex. template-custom.php. Leave blank if you don't want a custom page template. //don't edit under this line $page_check = get_page_by_title($new_page_title); $new_page = array( 'post_type' => 'page', 'post_title' => $new_page_title, 'post_content' => $new_page_content, 'post_status' => 'publish', 'post_author' => 1, ); if(!isset($page_check->ID)){ $new_page_id = wp_insert_post($new_page); if(!empty($new_page_template)){ update_post_meta($new_page_id,'_wp_page_template', $new_page_template); } }
-
- 2010-09-17
列出所有子类别
测试于: Wordpress 3.0.1
$echo = '<ul>' . "\n"; $childcats = get_categories('child_of=' . $cat . '&hide_empty=1'); foreach ($childcats as $childcat) { if (1 == $childcat->category_parent) { $echo .= "\t" . '<li><a href="' . get_category_link($childcat->cat_ID).'" title="' . $childcat->category_description . '">'; $echo .= $childcat->cat_name . '</a>'; $echo .= '</li>' . "\n"; } } $echo .= '</ul>' . "\n"; echo $echo;
在此处, http://wpengineer.com/中的更多信息和功能2025/list-all-subcategories/
List all SubCategories
Tested on: Wordpress 3.0.1
$echo = '<ul>' . "\n"; $childcats = get_categories('child_of=' . $cat . '&hide_empty=1'); foreach ($childcats as $childcat) { if (1 == $childcat->category_parent) { $echo .= "\t" . '<li><a href="' . get_category_link($childcat->cat_ID).'" title="' . $childcat->category_description . '">'; $echo .= $childcat->cat_name . '</a>'; $echo .= '</li>' . "\n"; } } $echo .= '</ul>' . "\n"; echo $echo;
also here, more informations and functins in the post http://wpengineer.com/2025/list-all-subcategories/
-
当有一个专门用于显示类别列表的功能时,为什么要这样做呢?Why would you do this when there's a function available specifically for displaying a list of categories..See: http://codex.wordpress.org/Template_Tags/wp_list_categories#Only_Show_Children_of_a_Category
- 1
- 2010-11-11
- t31os
-
- 2010-11-09
排除特定类别的子类别.
挺直截了当的,但我找不到有人完全按照我的需要做.如果选择了父类别,则还将显示该帖子,除非该帖子具有选中该父类别的子类别.
/* this code excludes all of the children of (category id = 20) posts on the HOME page, but allows parent (category id = 20) to be shown. */ function exclude_category_children($query) { $child_cats = (array) get_term_children('20', 'category'); if ( $query->is_home ) { $query->set('category__not_in', $child_cats); return $query; } } add_filter('pre_get_posts', 'exclude_category_children');
Exclude child categories of a specific category.
Pretty straight forward, but I couldn't find anyone doing exactly what I needed. Also it will display the post if the parent category is selected, except if that post has a child category of that parent selected.
/* this code excludes all of the children of (category id = 20) posts on the HOME page, but allows parent (category id = 20) to be shown. */ function exclude_category_children($query) { $child_cats = (array) get_term_children('20', 'category'); if ( $query->is_home ) { $query->set('category__not_in', $child_cats); return $query; } } add_filter('pre_get_posts', 'exclude_category_children');
-
- 2010-12-02
视情况检查层次结构后代
一个条件函数,用于检查当前页面是否是为其分配的ID的后代.对于确定页面是层次树中的孙子,曾孙子还是父亲很有用.
function is_tree($pid) { // $pid = The ID of the page we're looking for pages underneath global $post; // load details about this page $anc = get_post_ancestors( $post->ID ); foreach($anc as $ancestor) { if(is_page() && $ancestor == $pid) { return true; } } if(is_page()&&(is_page($pid))) return true; // we're at the page or at a sub page else return false; // we're elsewhere };
Conditional to check for hierarchy descendant
A conditional function to check if the current page is a descendant of the ID given to it. Useful for determining if a page is a grandchild, great-grandchild or father down the hierarchy tree.
function is_tree($pid) { // $pid = The ID of the page we're looking for pages underneath global $post; // load details about this page $anc = get_post_ancestors( $post->ID ); foreach($anc as $ancestor) { if(is_page() && $ancestor == $pid) { return true; } } if(is_page()&&(is_page($pid))) return true; // we're at the page or at a sub page else return false; // we're elsewhere };
-
我一直在寻找这个.感谢您整理!我可以要求对用例进行一些澄清.理想情况下,我想在菜单列表中使用此菜单,以便在网站顶部仅显示第1代元素的网站上有一个顶级父菜单.当我使用Gen 2-3元素时,可以通过" current-parent" css属性突出显示Gen1元素.这可能吗?I've been looking for this for awhile. Thanks for putting it together! Can I ask for a bit of clarification on use case. Ideally, I would like to use this in my menu listings so that if i have a top level parent menu across the top of the site that only shows Gen 1 elements. When I'm on a Gen 2-3 element, the Gen1 element can be highlighted via a "current-parent" css attribute. Is this possible?
- 0
- 2011-02-11
- Scott B
-
- 2011-06-13
为所有用户删除Admin Backend菜单,但用户#1(通常是第一个Admin)除外
/*-----------------------------------------------------------------------------------*/ /* Restrict access /*-----------------------------------------------------------------------------------*/ function remove_menus () { global $menu; $user = wp_get_current_user(); if ($user->ID!=1) { // Is not administrator, $restricted = array(__('Dashboard'), __('Posts'), __('Media'), __('Links'), __('Pages'), __('Appearance'), __('Tools'), __('Users'), __('Settings'), __('Comments'), __('Plugins')); end ($menu); while (prev($menu)){ $value = explode(' ',$menu[key($menu)][0]); if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);} } } } add_action('admin_menu', 'remove_menus');
Remove Admin Backend Menus for all users, except User #1 (usually the first Admin)
/*-----------------------------------------------------------------------------------*/ /* Restrict access /*-----------------------------------------------------------------------------------*/ function remove_menus () { global $menu; $user = wp_get_current_user(); if ($user->ID!=1) { // Is not administrator, $restricted = array(__('Dashboard'), __('Posts'), __('Media'), __('Links'), __('Pages'), __('Appearance'), __('Tools'), __('Users'), __('Settings'), __('Comments'), __('Plugins')); end ($menu); while (prev($menu)){ $value = explode(' ',$menu[key($menu)][0]); if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);} } } } add_action('admin_menu', 'remove_menus');
-
用户1可以是第一位管理员.但是在添加新管理员之后,第一个管理员可能只是普通用户.**问功能而不是数字.**另外,此代码属于插件,而不是functions.php.与主题的关系为零.User 1 may be the first admin. But after adding new administrators the first one may be just a regular user. **Ask for capabilities, not for numbers.** Plus, this code belongs into a plugin, not in the functions.php. There is zero relation to the theme.
- 0
- 2011-06-13
- fuxia
-
这样,您可以允许所有管理员正常工作,但同时隐藏第一个管理员并将其保留给系统管理员/支持团队.我不同意此代码属于插件.Functions.php是一个插件."该文件基本上就像一个插件".[Theme_Development#Functions_File](http://codex.wordpress.org/Theme_Development#Functions_File)This way you can allow all admins to act as normal but at the same time hide the first admin and reserve it to system administrator / support team. I disagree that this code belongs to a plugin. Functions.php is a plugin. `This file basically acts like a plugin` [Theme_Development#Functions_File](http://codex.wordpress.org/Theme_Development#Functions_File)
- 0
- 2011-06-13
- Daniel Sachs
-
但是functions.php包含与主题相关的逻辑,因为如果您切换主题,整个代码就会消失.因此,除非代码取决于主题,反之亦然-请勿将functions.php用作mu插件.But the functions.php contains logic which is tied to the theme, because if you switch themes the whole code is gone. So, unless the code depends on the theme and vice versa – do not use the functions.php as a mu-plugin.
- 0
- 2011-06-13
- fuxia
-
是.但是让我们考虑一下:您正在为客户开发一个网站.该网站将始终只使用一个主题,该主题是由设计师设计的.主题是网站.您可以添加自定义帖子类型,元框,加载其他功能等.现在,您确实想向某些用户提供管理功能,但是您希望隐藏网站中您的客户端永远不会使用或混淆的部分(链接,工具,注释,是最好的示例),并为支持团队提供一种" SuperAdmin",以便他们可以看到整个管理区域.Yes. But let's consider this: You are developing a website for a client. This website will always use only one theme, the one designed by the designer. The theme **is** the website. You add custom post types, metaboxes, load additional functions, etc. Now you do want to give some users the admin capabilities, but you want to hide some sections of the site that your client will never use or confuse them (Links, Tools, Comments, are the best examples) and to give the support team a sort of "SuperAdmin" so they can see the whole admin area.
- 0
- 2011-06-13
- Daniel Sachs
-
我看到您不同意用法,但是该功能有效且有用,因此我不明白为什么将其设为-1.I see that you disagree with the usage, but the function works and is useful, so I do not understand why -1 it.
- 0
- 2011-06-13
- Daniel Sachs
-
不幸的是,它不属于functions.php,就像这里的许多答案一样,它或早或晚都会中断.除此之外,它违反了WordPress编码标准.请不要把它当成个人.我的投票是对读者的建议.It doesn’t belong into a functions.php – like many answers here, unfortunately – and it **will** break sooner or later. Besides that, it violates the WordPress coding standards. Please, don’t take it personally. My vote is a recommendation for the reader.
- 0
- 2011-06-13
- fuxia
-
当然,没有什么个人的,托斯科.我们都试图帮助和学习.我们不同意,它发生了:)Of course, nothing personal, tosco. We all try to help and learn. We disagree, it happens :)
- 0
- 2011-06-13
- Daniel Sachs
-
@Daniel Sachs看一下[thisgist](https://gist.github.com/942518),并将`user_login`与`role`(?)交换.@Daniel Sachs Take a look at [this gist](https://gist.github.com/942518) and exchange `user_login` with `role`(?).
- 0
- 2011-06-13
- kaiser
-
@kaiser这很棒,如果我想将其用作所有管理员的插件或未设置菜单.如我所说,这仅允许为一个ID1的特定用户取消设置@kaiser This is great, if I wanted to use it as a plugin or unset menus for all admins. As i said, this allows to unset for just one specific user with ID1
- 0
- 2011-06-13
- Daniel Sachs
-
如果您查看链接的插件,那么它允许您根据"用户提供的内容(登录名,角色,ID)"来设置访问组.通常,依靠ID是"不是最佳实践"的概念.这就是我想指出的.If you look at the linked plugin, then it allows you to set access groups per "whatever a user offers (login name, role, ID)". Relying on IDs generally is a "not best practice" concept. That's all i wanted to point out.
- 1
- 2011-06-13
- kaiser
-
- 2011-08-19
在wordpress 3.2中禁用浏览器升级警告
//Disable browser upgrade warning in wordpress 3.2 function disable_browser_upgrade_warning() { remove_meta_box( 'dashboard_browser_nag', 'dashboard', 'normal' ); } add_action( 'wp_dashboard_setup', 'disable_browser_upgrade_warning' );
Disable browser upgrade warning in wordpress 3.2
//Disable browser upgrade warning in wordpress 3.2 function disable_browser_upgrade_warning() { remove_meta_box( 'dashboard_browser_nag', 'dashboard', 'normal' ); } add_action( 'wp_dashboard_setup', 'disable_browser_upgrade_warning' );
-
- 2011-10-14
is_tree()条件函数
/* Adapted from csstricks with addition of ancestors .... use = if(is_tree($id)) { // do stuff } ... Returns true if the page is = $id OR any of it's children OR descendants */ function is_tree($pid) { // $pid = The ID of the page we're looking for pages underneath global $post; // load details about this page $ancestors = get_post_ancestors($post); if(is_page()&&($post->post_parent==$pid||is_page($pid)||(in_array($pid,$ancestors)))) return true; // we're at the page or at a sub page else return false; // we're elsewhere };
is_tree() conditional Function
/* Adapted from csstricks with addition of ancestors .... use = if(is_tree($id)) { // do stuff } ... Returns true if the page is = $id OR any of it's children OR descendants */ function is_tree($pid) { // $pid = The ID of the page we're looking for pages underneath global $post; // load details about this page $ancestors = get_post_ancestors($post); if(is_page()&&($post->post_parent==$pid||is_page($pid)||(in_array($pid,$ancestors)))) return true; // we're at the page or at a sub page else return false; // we're elsewhere };
-
- 2011-12-04
显示在没有插件的情况下提交评论最多的用户
function top_comment_authors($amount = 5) { global $wpdb; $results = $wpdb->get_results(' SELECT COUNT(comment_author_email) AS comments_count, comment_author_email, comment_author, comment_author_url FROM '.$wpdb->comments.' WHERE comment_author_email != "" AND comment_type = "" AND comment_approved = 1 GROUP BY comment_author_email ORDER BY comments_count DESC, comment_author ASC LIMIT '.$amount ); $output = "<ul>"; foreach($results as $result) { $output .= "<li>".$result->comment_author."</li>"; } $output .= "</ul>"; echo $output; }
您可以调用的其他选项: $ result-> comment_author_email $ result-> comments_count $ result-> comment_author_url
Display the users that have submitted the most comments without a plugin
function top_comment_authors($amount = 5) { global $wpdb; $results = $wpdb->get_results(' SELECT COUNT(comment_author_email) AS comments_count, comment_author_email, comment_author, comment_author_url FROM '.$wpdb->comments.' WHERE comment_author_email != "" AND comment_type = "" AND comment_approved = 1 GROUP BY comment_author_email ORDER BY comments_count DESC, comment_author ASC LIMIT '.$amount ); $output = "<ul>"; foreach($results as $result) { $output .= "<li>".$result->comment_author."</li>"; } $output .= "</ul>"; echo $output; }
Other options you can call: $result->comment_author_email $result->comments_count $result->comment_author_url
-
- 2010-09-13
尽可能获取用户的真实IP地址
测试于: Wordpress 3.0.1
如果您使用的是代理服务器或负载均衡器,请将其添加到wp-config.php文件或functions.php中.
// Gets the user's real IP address $_SERVER['REMOTE_ADDR'] = getRealIpAddress(); function getRealIpAddress( $validate = true ) { if ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) && !empty($_SERVER['HTTP_X_FORWARDED_FOR']) ) { $ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); $ip = trim($ips[count($ips) - 1]); } elseif ( isset($_SERVER['HTTP_X_REAL_IP']) && !empty($_SERVER['HTTP_X_REAL_IP']) ) { $ip = $_SERVER['HTTP_X_REAL_IP']; } elseif ( isset($_SERVER['HTTP_CLIENT_IP']) && !empty($_SERVER['HTTP_CLIENT_IP']) ) { $ip = $_SERVER['HTTP_CLIENT_IP']; } else { $ip = $_SERVER['REMOTE_ADDR']; } if ( $validate && function_exists('filter_var') && filter_var($ip, FILTER_VALIDATE_IP, array('flags' => FILTER_FLAG_IPV4, FILTER_FLAG_NO_PRIV_RANGE, FILTER_FLAG_NO_RES_RANGE)) ) return $ip; elseif ( $validate ) return long2ip(ip2long($ip)); return $ip; }
Get the Users Real IP Address whenever possible
Tested on: Wordpress 3.0.1
If you're using a proxy or load balancer, adding this to your wp-config.php file or functions.php
// Gets the user's real IP address $_SERVER['REMOTE_ADDR'] = getRealIpAddress(); function getRealIpAddress( $validate = true ) { if ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) && !empty($_SERVER['HTTP_X_FORWARDED_FOR']) ) { $ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); $ip = trim($ips[count($ips) - 1]); } elseif ( isset($_SERVER['HTTP_X_REAL_IP']) && !empty($_SERVER['HTTP_X_REAL_IP']) ) { $ip = $_SERVER['HTTP_X_REAL_IP']; } elseif ( isset($_SERVER['HTTP_CLIENT_IP']) && !empty($_SERVER['HTTP_CLIENT_IP']) ) { $ip = $_SERVER['HTTP_CLIENT_IP']; } else { $ip = $_SERVER['REMOTE_ADDR']; } if ( $validate && function_exists('filter_var') && filter_var($ip, FILTER_VALIDATE_IP, array('flags' => FILTER_FLAG_IPV4, FILTER_FLAG_NO_PRIV_RANGE, FILTER_FLAG_NO_RES_RANGE)) ) return $ip; elseif ( $validate ) return long2ip(ip2long($ip)); return $ip; }
-
这到底是做什么的?what does this do exactly?
- 1
- 2010-09-14
- NetConstructor.com
-
当用户位于代理或负载均衡器的后面时,任何使用超全局$ _SERVER ['REMOTE_ADDR']抓住该用户IP地址的东西都将看到代理或负载均衡器的IP地址.反过来,proxy/lb将用户的原始IP地址放在X-Forwarded-For X-Real-Ip或Client-Ip标头中(取决于代理/lb配置).因此,在评论(或发布,但相关性较低)时,WP将看到很多用户来自相同的IP地址.这可以通过用原始IP替换$ _SERVER ['REMOTE_ADDR']来解决.When a user is behind a proxy or load balancer, then anything that grabs that user's IP address using the superglobal $_SERVER['REMOTE_ADDR'] will see the proxy or load balancer's IP address. The proxy/lb in return puts the user's original IP address in the X-Forwarded-For X-Real-Ip, or Client-Ip headers (depending on the proxy/lb configuration). Thus, when commenting (or posting, but that's less relevant) WP will see a lot of users coming from the same IP address. This fixes that by replacing $_SERVER['REMOTE_ADDR'] with the original IP.
- 0
- 2010-09-19
- gabrielk
-
通过将HTTP_X_FORWARDED_FOR标头手动添加到每个浏览器请求中,可以轻松实现这些目的.我最喜欢的是将其设置为127.0.0.1,然后在该示例中将$ _SERVER ['REMOVE_ADDR']设置为空值.Those are easy to trick by adding the HTTP_X_FORWARDED_FOR header manually into each browser request. My favorite is to set it 127.0.0.1 which will then set $_SERVER['REMOVE_ADDR'] to an empty value with that example.
- 0
- 2010-11-05
- hakre
-
- 2010-11-17
从目录位置自动添加标题图像
在默认情况下,它们随wordpress一起出现,您会注意到一个附加的主题菜单被激活,使您可以选择要使用的标题图像.在默认主题代码中,这些图像被硬编码到functions.php文件中.下面的代码允许wordpress直接根据您可以在服务器上(或在主题文件夹中)创建的特定标头图片自动提取新图片.
它将自动包含任何.jpg或.jpeg文件.每个图像必须具有关联的缩略图文件,但是这可以仅仅是具有不同名称的原始文件的副本,其文件名必须以" -thumbnail"结尾.标题外观设置中的关联名称用作描述,下划线自动替换为空格. (例如,My_Header_Image_A.jpg,My_Header_Image_A=thumbnail.jpg的描述会自动显示为"我的页眉图片A")
if ($handle = opendir( TEMPLATEPATH . '/images/headers/') ) { $headers = array(); while (false !== ($file = readdir($handle))) { $pos = strrpos( $file, '.' ); if( $pos !== false && $pos > 0 ) { $file_name = substr( $file, 0, $pos ); if( strpos( $file_name, "-thumbnail" ) === false ) { $file_ext = substr( $file, $pos+1 ); $file_ext_low = strtolower( $file_ext ); if( $file_ext_low == "jpg" || $file_ext_low == "jpeg" ) { $headers[$file_name] = array ( 'url' => '%s/images/headers/' . $file, 'thumbnail_url' => '%s/images/headers/' . $file_name ."-thumbnail." . $file_ext, 'description' => __( str_replace( "_", " ", $file_name ), 'twentyten' ) ); } } } } closedir($handle); register_default_headers( $headers ); }
Automatically adding header images from directory location
Within the default them which comes with wordpress you will notice an additional theme menu which gets activated that lets you select a header image to be utilized. Within the default theme code these images are hardcoded into the functions.php file. The code below allows wordpress to automatically pick up new images based upon a specific header image directly you can create on your server (or within your themes folder).
It will automatically include any .jpg or .jpeg files. Every image must have a associating thumbnail file but this can just be a copy of the original with a different name with a file name that has to end in "-thumbnail". The associating name is used as the description in the headers appearance settings and underscores are automatically replaced with spaces. (e.g. My_Header_Image_A.jpg, My_Header_Image_A=thumbnail.jpg will have a description automatically presented a “My Header Image A”)
if ($handle = opendir( TEMPLATEPATH . '/images/headers/') ) { $headers = array(); while (false !== ($file = readdir($handle))) { $pos = strrpos( $file, '.' ); if( $pos !== false && $pos > 0 ) { $file_name = substr( $file, 0, $pos ); if( strpos( $file_name, "-thumbnail" ) === false ) { $file_ext = substr( $file, $pos+1 ); $file_ext_low = strtolower( $file_ext ); if( $file_ext_low == "jpg" || $file_ext_low == "jpeg" ) { $headers[$file_name] = array ( 'url' => '%s/images/headers/' . $file, 'thumbnail_url' => '%s/images/headers/' . $file_name ."-thumbnail." . $file_ext, 'description' => __( str_replace( "_", " ", $file_name ), 'twentyten' ) ); } } } } closedir($handle); register_default_headers( $headers ); }
-
- 2011-03-21
如果评论状态为关闭,则从管理栏中删除"评论"链接
您可以将默认评论状态设置为"已关闭",但是评论链接将保留.只需将以下内容放入您的
functions.php
文件中,即可根据情况将其删除.提供两种不同的方法./** * Disable 'Comments' link if default status is _closed_ */ function remove_comments() { $default_comment_status = get_option( 'default_comment_status' ); if ( $default_comment_status == 'closed' ) { remove_action( 'admin_bar_menu', 'wp_admin_bar_comments_menu', 50 ); // optional solution using the WP_Admin_Bar class from /wp-includes/class-wp-admin-bar.php # global $wp_admin_bar; # $wp_admin_bar->remove_menu( 'comments' ); } else { return; } }
Remove "Comments" link from admin bar if comment status is closed
You can set the default comment status to 'closed', but the comments link will stay. Simply drop the following into your
functions.php
file to get rid of it based on the condition. Offers 2 different approaches./** * Disable 'Comments' link if default status is _closed_ */ function remove_comments() { $default_comment_status = get_option( 'default_comment_status' ); if ( $default_comment_status == 'closed' ) { remove_action( 'admin_bar_menu', 'wp_admin_bar_comments_menu', 50 ); // optional solution using the WP_Admin_Bar class from /wp-includes/class-wp-admin-bar.php # global $wp_admin_bar; # $wp_admin_bar->remove_menu( 'comments' ); } else { return; } }
-
- 2011-11-30
向WP_NAV_MENUS添加自定义下拉选项,用户可以在其中为每个菜单项选择预定义的CSS类
<?php function menu_item_class_select(){ global $pagenow; if ($pagenow == "nav-menus.php"){ ?> <script> jQuery(document).ready(function(){ function create_dd(v){ //create dropdown var dd = jQuery('<select class="my_class"></select>'); //create dropdown options //array with the options you want var classes = ["","class1","class2","class3"]; jQuery.each(classes, function(i,val) { if (v == val){ dd.append('<option value="'+val+'" selected="selected">'+val+'</option>'); }else{ dd.append('<option value="'+val+'">'+val+'</option>'); } }); return dd; } jQuery(".edit-menu-item-classes").each(function() { //add dropdown var t = create_dd(jQuery(this).val()); jQuery(this).before(t); //hide all inputs jQuery(this).css("display","none"); }); //update input on selection jQuery(".my_class").bind("change", function() { var v = jQuery(this).val(); var inp = jQuery(this).next(); inp.attr("value",v); }); }); </script> <?php } } add_action('admin_footer','menu_item_class_select'); ?>
Adds a custom dropdown option to WP_NAV_MENUS where the user can select a predefined css class for each menu item
<?php function menu_item_class_select(){ global $pagenow; if ($pagenow == "nav-menus.php"){ ?> <script> jQuery(document).ready(function(){ function create_dd(v){ //create dropdown var dd = jQuery('<select class="my_class"></select>'); //create dropdown options //array with the options you want var classes = ["","class1","class2","class3"]; jQuery.each(classes, function(i,val) { if (v == val){ dd.append('<option value="'+val+'" selected="selected">'+val+'</option>'); }else{ dd.append('<option value="'+val+'">'+val+'</option>'); } }); return dd; } jQuery(".edit-menu-item-classes").each(function() { //add dropdown var t = create_dd(jQuery(this).val()); jQuery(this).before(t); //hide all inputs jQuery(this).css("display","none"); }); //update input on selection jQuery(".my_class").bind("change", function() { var v = jQuery(this).val(); var inp = jQuery(this).next(); inp.attr("value",v); }); }); </script> <?php } } add_action('admin_footer','menu_item_class_select'); ?>
-
- 2011-12-19
删除WordPress 3.3管理栏菜单项
function dashboard_tweaks() { global $wp_admin_bar; $wp_admin_bar->remove_menu('wp-logo'); $wp_admin_bar->remove_menu('about'); $wp_admin_bar->remove_menu('wporg'); $wp_admin_bar->remove_menu('documentation'); $wp_admin_bar->remove_menu('support-forums'); $wp_admin_bar->remove_menu('feedback'); $wp_admin_bar->remove_menu('view-site'); } add_action( 'wp_before_admin_bar_render', 'dashboard_tweaks' );
Remove WordPress 3.3 Admin Bar Menu Items
function dashboard_tweaks() { global $wp_admin_bar; $wp_admin_bar->remove_menu('wp-logo'); $wp_admin_bar->remove_menu('about'); $wp_admin_bar->remove_menu('wporg'); $wp_admin_bar->remove_menu('documentation'); $wp_admin_bar->remove_menu('support-forums'); $wp_admin_bar->remove_menu('feedback'); $wp_admin_bar->remove_menu('view-site'); } add_action( 'wp_before_admin_bar_render', 'dashboard_tweaks' );
Reference: http://pastebin.com/Wrk0JPxw
-
- 2010-11-04
从公共页面中排除默认类别
从网站的正面排除默认类别.
代码不包括管理区域,否则您将无法管理分配有默认类别的帖子.add_filter( 'list_terms_exclusions', 'exclude_default_cat' ); function exclude_default_cat( $exclusions ) { if( !is_admin() ) $exclusions .= "AND t.term_id != " . get_option( 'default_category' ) . " "; return $exclusions; }
Exclude default category from public pages
Excludes the default category from the front-facing side of the website.
Code excludes the admin area, else you'll have no way to manage posts assigned with the default category.add_filter( 'list_terms_exclusions', 'exclude_default_cat' ); function exclude_default_cat( $exclusions ) { if( !is_admin() ) $exclusions .= "AND t.term_id != " . get_option( 'default_category' ) . " "; return $exclusions; }
-
- 2010-12-03
显示已登录用户的信息
if ( is_user_logged_in() ) { }
在functions.php文件中不起作用.您可以使用以下代码:
if ( !function_exists('is_user_logged_in') ) : function is_user_logged_in() { $user = wp_get_current_user(); if ( $user->id == 0 ){ // This section if user is not logged in } else { // This section if user is logged in } } endif;
Displaying information for logged in users
if ( is_user_logged_in() ) { }
is not working in functions.php file. You can use this code:
if ( !function_exists('is_user_logged_in') ) : function is_user_logged_in() { $user = wp_get_current_user(); if ( $user->id == 0 ){ // This section if user is not logged in } else { // This section if user is logged in } } endif;
-
如果if(!current_user_can('read'))`应该吸引访客(即未登录的用户).`if( !current_user_can('read') )` should catch guests (ie. non-logged in users) ..
- 0
- 2010-12-07
- t31os
-
我刚刚测试过它,而is_user_logged_in()在functions.php中似乎工作正常?..关于它为什么不应该出现的任何背景信息?I just tested it and `is_user_logged_in()` seems to work just fine in `functions.php`?.. Any background info on why it's not supposed to?
- 2
- 2011-01-26
- Rarst
-
- 2011-06-13
登录页面和管理员的自定义徽标
/*-----------------------------------------------------------------------------------*/ /* Custom logos /*-----------------------------------------------------------------------------------*/ function custom_admin_logo() { echo ' <style type="text/css"> #header-logo { background-image: url('.get_bloginfo('template_directory').'/path/to/images/admin-logo.png) !important; } </style> '; } add_action('admin_head', 'custom_admin_logo'); function custom_login_logo() { echo '<style type="text/css"> h1 a { background-image:url('.get_bloginfo('template_directory').'/path/to/images/login-logo.png) !important; } </style>'; } add_action('login_head', 'custom_login_logo');
Custom Logos for Login page and Admin
/*-----------------------------------------------------------------------------------*/ /* Custom logos /*-----------------------------------------------------------------------------------*/ function custom_admin_logo() { echo ' <style type="text/css"> #header-logo { background-image: url('.get_bloginfo('template_directory').'/path/to/images/admin-logo.png) !important; } </style> '; } add_action('admin_head', 'custom_admin_logo'); function custom_login_logo() { echo '<style type="text/css"> h1 a { background-image:url('.get_bloginfo('template_directory').'/path/to/images/login-logo.png) !important; } </style>'; } add_action('login_head', 'custom_login_logo');
-
请查看[thisgist](https://gist.github.com/671743).比要点中显示的更好的选择.您也可以尝试参加trac票证(gist插件标题中的链接).Please take a look at [this gist](https://gist.github.com/671743). There are even better options than shown in the gist. You could also try to participate on the trac ticket (link in gist plugin header).
- 2
- 2011-06-13
- kaiser
-
- 2011-06-13
从用户列表中删除管理员(用户#1)
function your_pre_user_query($user_search) { $user = wp_get_current_user(); if ($user->ID!=1) { global $wpdb; $user_search->query_where = str_replace('WHERE 1=1', "WHERE 1=1 AND {$wpdb->users}.ID<>1",$user_search->query_where); } } add_action('pre_user_query','your_pre_user_query');
Remove Admin (User #1) from User list
function your_pre_user_query($user_search) { $user = wp_get_current_user(); if ($user->ID!=1) { global $wpdb; $user_search->query_where = str_replace('WHERE 1=1', "WHERE 1=1 AND {$wpdb->users}.ID<>1",$user_search->query_where); } } add_action('pre_user_query','your_pre_user_query');
-
同样,用户1可以是非管理员.请参阅[角色和功能](http://codex.wordpress.org/Roles_and_Capabilities).Again: user 1 may be a non-admin. See [Roles and Capabilities](http://codex.wordpress.org/Roles_and_Capabilities).
- 0
- 2011-06-13
- fuxia
-
这是一个例子.另外,在默认安装中,用户1是Admin-创建的第一个用户.这就是为什么我强调(用户1)It's an example. Plus in default installations the user 1 is Admin - the first user created. This is why I emphasized (User #1)
- 0
- 2011-06-13
- Daniel Sachs
-
该示例显示了如何不检查管理功能.您不应在真实的网站中使用此代码.It is an example showing how not to check for administrative capabilities. You should not use this code in a real website.
- 0
- 2011-06-13
- fuxia
-
究竟.这段代码不会检查功能,而是针对特定用户.这段代码与功能无关,我在任何地方都没有提到功能.我不明白为什么不能在生产现场使用它.Exactly. This code doesn't check for capabilities, toscho, but for specific user. This code has nothing to do with capabilities and I haven't mentioned capabilities anywhere. I don't see why this can not be used on production sites.
- 0
- 2011-06-13
- Daniel Sachs
-
@Daniel Sachs如果您正在搜索有史以来第一个添加的管理员,请首先检查所有用户的角色,然后按其ID对其进行排序,并采用第一个.正如@toscho所说:当前是"您不应该这样做的示例".原因:a)实际的管理员可能不是ID最低的管理员.b)如果其他人可以进行此工作,则他/他将不会在主题中搜索此功能.@Daniel Sachs If you're searching for the first ever added administrator, please check the roles of all users first, then sort them by their ID and take the first one. As @toscho said: Currently it's "how you should not do it example". Reasons: a) the actual Admin might not be the one with the lowest ID b) If someone else would work on this, she/he wouldn't search for this functionality in a theme.
- 0
- 2011-06-13
- kaiser
-
- 2011-09-14
获取给定缩略图的属性
将此功能与循环一起使用可确定缩略图图像的宽度,高度和URL.通过内联CSS将缩略图分配为背景元素非常方便.
/** * GET THUMBNAIL ATTRIBUTES * * Fetches width, heigth and URI of a thumbnail. * * @author Philip Downer <[email protected]> * @license http://opensource.org/licenses/gpl-license.php GNU Public License * @version v1.0 * * @param string $return Accepts 'path', 'width', or 'height'. * @param string $size The thumbnail size corresponding to {@link add_image_size() WP core function}. * @return mixed Returns the requested info, or if no 'Featured Image' assigned, returns 'false'. */ function get_thumb_attr($return,$size='thumbnail') { global $post; if (has_post_thumbnail($post->ID)) { $thumb = wp_get_attachment_image_src(get_post_thumbnail_id(), 'intro'); if ( $return == 'path' ) { return $thumb[0]; } if ( $return == 'width' ) { return $thumb[1]; } if ( $return == 'height' ) { return $thumb[2]; } } else { return false; } }//end function
Get Attributes of Given Thumbnail
Use this function with the loop to determine width, height and URL of a thumbnailed image. Very handy for assigning a thumbnailed image as a background element via inline CSS.
/** * GET THUMBNAIL ATTRIBUTES * * Fetches width, heigth and URI of a thumbnail. * * @author Philip Downer <[email protected]> * @license http://opensource.org/licenses/gpl-license.php GNU Public License * @version v1.0 * * @param string $return Accepts 'path', 'width', or 'height'. * @param string $size The thumbnail size corresponding to {@link add_image_size() WP core function}. * @return mixed Returns the requested info, or if no 'Featured Image' assigned, returns 'false'. */ function get_thumb_attr($return,$size='thumbnail') { global $post; if (has_post_thumbnail($post->ID)) { $thumb = wp_get_attachment_image_src(get_post_thumbnail_id(), 'intro'); if ( $return == 'path' ) { return $thumb[0]; } if ( $return == 'width' ) { return $thumb[1]; } if ( $return == 'height' ) { return $thumb[2]; } } else { return false; } }//end function
-
- 2011-11-17
使用侧边栏的ID在侧边栏上下文之外输出侧边的内容.不包括HTML之前/之后的换行.您需要知道要针对的小部件的特定ID(即"text-5").
function widget_contents($id) { list($type,$number) = explode('-',$id); global $wp_registered_widgets; $wp_registered_widgets[$id]['callback'][0]->display_callback(array('widget_id'=>$id),$number); }
如果不确定所需的确切ID,则可以查看 wp_get_sidebars_widgets()的输出.
从 dynamic_sidebar()函数下的/wp-includes/widgets.php 中提取的更完整的示例:
function render_widget($id) { global $wp_registered_widgets; $params = array_merge( array( array('widget_id' => $id, 'widget_name' => $wp_registered_widgets[$id]['name']) ), (array) $wp_registered_widgets[$id]['params'] ); $classname_ = ''; foreach ( (array) $wp_registered_widgets[$id]['classname'] as $cn ) { if ( is_string($cn) ) $classname_ .= '_' . $cn; elseif ( is_object($cn) ) $classname_ .= '_' . get_class($cn); } $classname_ = ltrim($classname_, '_'); $params[0]['before_widget'] = sprintf($params[0]['before_widget'], $id, $classname_); if ( is_callable($wp_registered_widgets[$id]['callback']) ) call_user_func_array($wp_registered_widgets[$id]['callback'], $params); }
Output the contents of a widget outside the context of a sidebar using it's ID. The wrapping before/after HTML is not included. You need to know the specific ID of the widget you're angling for (ie 'text-5').
function widget_contents($id) { list($type,$number) = explode('-',$id); global $wp_registered_widgets; $wp_registered_widgets[$id]['callback'][0]->display_callback(array('widget_id'=>$id),$number); }
You can peek at the output of wp_get_sidebars_widgets() if you aren't sure of the precise ID you need.
A more complete example lifted from /wp-includes/widgets.php under the dynamic_sidebar() function:
function render_widget($id) { global $wp_registered_widgets; $params = array_merge( array( array('widget_id' => $id, 'widget_name' => $wp_registered_widgets[$id]['name']) ), (array) $wp_registered_widgets[$id]['params'] ); $classname_ = ''; foreach ( (array) $wp_registered_widgets[$id]['classname'] as $cn ) { if ( is_string($cn) ) $classname_ .= '_' . $cn; elseif ( is_object($cn) ) $classname_ .= '_' . get_class($cn); } $classname_ = ltrim($classname_, '_'); $params[0]['before_widget'] = sprintf($params[0]['before_widget'], $id, $classname_); if ( is_callable($wp_registered_widgets[$id]['callback']) ) call_user_func_array($wp_registered_widgets[$id]['callback'], $params); }
-
h更简单的方法是使用`the_widget()`http://codex.wordpress.org/Function_Reference/the_widgetDoh. The much simpler method would be to use `the_widget()` http://codex.wordpress.org/Function_Reference/the_widget
- 0
- 2012-02-08
- dalethedeveloper
-
- 2011-12-04
自定义表情符号(插件)
/** * Smilies. */ function filter_smilies_src($img_src, $img, $siteurl) { return plugins_url('', __FILE__) . '/img/smilies/' . $img; } add_filter('smilies_src', 'filter_smilies_src', 1, 10);
自定义表情符号(主题)
/** * Smilies. */ function filter_smilies_src($img_src, $img, $siteurl) { return get_bloginfo('stylesheet_directory') . '/images/smilies/' . $img; } add_filter('smilies_src', 'filter_smilies_src', 1, 10);
Custom smilies (plugin)
/** * Smilies. */ function filter_smilies_src($img_src, $img, $siteurl) { return plugins_url('', __FILE__) . '/img/smilies/' . $img; } add_filter('smilies_src', 'filter_smilies_src', 1, 10);
Custom smilies (theme)
/** * Smilies. */ function filter_smilies_src($img_src, $img, $siteurl) { return get_bloginfo('stylesheet_directory') . '/images/smilies/' . $img; } add_filter('smilies_src', 'filter_smilies_src', 1, 10);
-
- 2012-02-03
跨分类标签查询
一个缓存的查询,对于给定的分类标准参数,默认为 Category (类别),为所有标签输出类似于所有标签的HTML字符串的
get_tags()
.您可以使用$where_slug
和$where_tax
来获取由任何其他分类法过滤的帖子标签. SQL已针对WP 3.1至WP 3.3.1进行了测试.function tags_by_other_taxonomy($where_slug,$where_tax = 'category',$bust_cache = false) { $cache_key = "{$where_slug}:{$where_tax}"; $cache = get_transient('tags_by_other_taxonomy'); $html = ''; if( true !== $bust_cache and false !== $cache and isset($cache[$cache_key]) and !empty($cache[$cache_key]) ) { $html = $cache[$cache_key]; } else { global $wpdb; $cat_id = $wpdb->get_var("SELECT tt.term_taxonomy_id FROM $wpdb->terms t INNER JOIN $wpdb->term_taxonomy tt ON t.term_id = tt.term_id WHERE t.slug = '{$where_slug}' AND tt.taxonomy = '{$where_tax}' LIMIT 1"); if( !empty($cat_id) ) { $cat_posts = $wpdb->get_col("SELECT tr.object_id FROM $wpdb->term_relationships tr inner join $wpdb->posts p ON p.ID = tr.object_id WHERE term_taxonomy_id = {$cat_id} AND p.post_status = 'publish' AND p.post_type = 'post'"); if( count($cat_posts) ) { $tags = $wpdb->get_results("SELECT DISTINCT t.name,t.slug FROM $wpdb->term_taxonomy tt INNER JOIN $wpdb->term_relationships tr ON tt.term_taxonomy_id = tr.term_taxonomy_id INNER JOIN $wpdb->terms t ON t.term_id = tt.term_id WHERE tt.taxonomy = 'post_tag' and tr.object_id IN (".implode(',',$cat_posts) .')'); $html = '<ul class="post-tags-'.$where_slug.'">'; if( count($tags) ) { foreach($tags as $tag) $html .= '<li><a href="/tag/'.$tag->slug.'/" title="Posts tagged with '.$tag->name.'">'.$tag->name.'</a></li>'; } $html .= '</ul>'; if( !is_array($cache) ) $cache = array(); $cache[$cache_key] = $html; set_transient('sc_cross_tax', $cache, 86400); } } } echo $html; }
例如,在新闻类别条目中获取已发布帖子的所有标签:
<?php echo tags_by_other_taxonomy('news'); ?>
Cross Taxonomy Tags Query
A cached query that outputs a
get_tags()
like HTML string of all tags for a given Taxonomy parameter defaulting to a Category. You can use$where_slug
and$where_tax
to get post tags filtered by any other taxonomy. SQL tested for WP 3.1 to WP 3.3.1.function tags_by_other_taxonomy($where_slug,$where_tax = 'category',$bust_cache = false) { $cache_key = "{$where_slug}:{$where_tax}"; $cache = get_transient('tags_by_other_taxonomy'); $html = ''; if( true !== $bust_cache and false !== $cache and isset($cache[$cache_key]) and !empty($cache[$cache_key]) ) { $html = $cache[$cache_key]; } else { global $wpdb; $cat_id = $wpdb->get_var("SELECT tt.term_taxonomy_id FROM $wpdb->terms t INNER JOIN $wpdb->term_taxonomy tt ON t.term_id = tt.term_id WHERE t.slug = '{$where_slug}' AND tt.taxonomy = '{$where_tax}' LIMIT 1"); if( !empty($cat_id) ) { $cat_posts = $wpdb->get_col("SELECT tr.object_id FROM $wpdb->term_relationships tr inner join $wpdb->posts p ON p.ID = tr.object_id WHERE term_taxonomy_id = {$cat_id} AND p.post_status = 'publish' AND p.post_type = 'post'"); if( count($cat_posts) ) { $tags = $wpdb->get_results("SELECT DISTINCT t.name,t.slug FROM $wpdb->term_taxonomy tt INNER JOIN $wpdb->term_relationships tr ON tt.term_taxonomy_id = tr.term_taxonomy_id INNER JOIN $wpdb->terms t ON t.term_id = tt.term_id WHERE tt.taxonomy = 'post_tag' and tr.object_id IN (".implode(',',$cat_posts) .')'); $html = '<ul class="post-tags-'.$where_slug.'">'; if( count($tags) ) { foreach($tags as $tag) $html .= '<li><a href="/tag/'.$tag->slug.'/" title="Posts tagged with '.$tag->name.'">'.$tag->name.'</a></li>'; } $html .= '</ul>'; if( !is_array($cache) ) $cache = array(); $cache[$cache_key] = $html; set_transient('sc_cross_tax', $cache, 86400); } } } echo $html; }
For example, get all tags for Published Posts in the news Category slug:
<?php echo tags_by_other_taxonomy('news'); ?>
-
- 2010-09-09
通过JQUERY重新放置所见即所得编辑器
测试于: Wordpress 3.0.1
此代码将允许您删除Wordpress默认情况下添加到POST和PAGES屏幕的特定元框.
// REPOSITION WYSIWYG EDITOR THROUGH JQUERY add_action('admin_head','admin_head_hook'); function admin_head_hook() { ?><style type="text/css"> #postdiv.postarea, #postdivrich.postarea { margin:0; } #post-status-info { line-height:1.4em; font-size:13px; } .custom-wysiwyg-editor-container { margin:2px 6px 6px 6px; } #ed_toolbar { display:none; } #postdiv #ed_toolbar, #postdivrich #ed_toolbar { display:block; } </style><?php } add_action('admin_footer','admin_footer_hook'); function admin_footer_hook() { ?><script type="text/javascript"> jQuery('#postdiv, #postdivrich').prependTo('.custom-wysiwyg-editor-container'); </script><?php }
Reposition the WYSIWYG Editor through JQUERY
Tested on: Wordpress 3.0.1
This code will allow you to remove specific meta boxes which wordpress adds by default to the POST and PAGES screens.
// REPOSITION WYSIWYG EDITOR THROUGH JQUERY add_action('admin_head','admin_head_hook'); function admin_head_hook() { ?><style type="text/css"> #postdiv.postarea, #postdivrich.postarea { margin:0; } #post-status-info { line-height:1.4em; font-size:13px; } .custom-wysiwyg-editor-container { margin:2px 6px 6px 6px; } #ed_toolbar { display:none; } #postdiv #ed_toolbar, #postdivrich #ed_toolbar { display:block; } </style><?php } add_action('admin_footer','admin_footer_hook'); function admin_footer_hook() { ?><script type="text/javascript"> jQuery('#postdiv, #postdivrich').prependTo('.custom-wysiwyg-editor-container'); </script><?php }
-
- 2010-09-09
自动关闭所见即所得编辑器中丢失的标签
测试于: Wordpress 3.0.1
使用所见即所得编辑器时,此代码将自动关闭所有丢失的标签.
// AUTOMATICALLY CLEAN UP HTML WYSIWYG EDITOR BY CLOSING MISSING TAGS function clean_bad_content($bPrint = false) { global $post; $szPostContent = $post->post_content; $szRemoveFilter = array("~<p[^>]*>\s?</p>~", "~<a[^>]*>\s?</a>~", "~<font[^>]*>~", "~<\/font>~", "~style\=\"[^\"]*\"~", "~<span[^>]*>\s?</span>~"); $szPostContent = preg_replace($szRemoveFilter, '', $szPostContent); $szPostContent = apply_filters('the_content', $szPostContent); if ($bPrint == false) return $szPostContent; else echo $szPostContent; }
Automatically close missing tags from the WYSIWYG editor
Tested on: Wordpress 3.0.1
This code will automatically close any missing tags when using the WYSIWYG editor.
// AUTOMATICALLY CLEAN UP HTML WYSIWYG EDITOR BY CLOSING MISSING TAGS function clean_bad_content($bPrint = false) { global $post; $szPostContent = $post->post_content; $szRemoveFilter = array("~<p[^>]*>\s?</p>~", "~<a[^>]*>\s?</a>~", "~<font[^>]*>~", "~<\/font>~", "~style\=\"[^\"]*\"~", "~<span[^>]*>\s?</span>~"); $szPostContent = preg_replace($szRemoveFilter, '', $szPostContent); $szPostContent = apply_filters('the_content', $szPostContent); if ($bPrint == false) return $szPostContent; else echo $szPostContent; }
-
只是让您知道,WordPress本身可以执行此操作.如果一个人需要将其强制设置为多个用户,而不论其设置如何,则IT可能会很有用.但是我会强制保存该设置.Just to let you know there is an option of doing that in WordPress itself. IT can be useful if one needs to force it for multiple users irrespective of their setting. But I would force saving that setting instead.
- 0
- 2011-04-20
- Ashfame
-
- 2011-01-28
删除
的role="search"
get_search_form()
属性function remove_role_search($role) { $result = array(); preg_match_all('|role="[^"]*"|U', $role, $result); foreach ($result[0] as $role_tag) { $role = str_replace($role_tag, '', $role); } return $role; } add_filter('get_search_form', 'remove_role_search');
Remove
role="search"
attributes forget_search_form()
function remove_role_search($role) { $result = array(); preg_match_all('|role="[^"]*"|U', $role, $result); foreach ($result[0] as $role_tag) { $role = str_replace($role_tag, '', $role); } return $role; } add_filter('get_search_form', 'remove_role_search');
-
- 2011-02-23
将登录链接添加到wp_nav_menu
//ADD LOGIN LINK TO MENU add_filter('wp_nav_menu_items', 'add_login_logout_link', 10, 2); function add_login_logout_link($items, $args) { $loginoutlink = wp_loginout('index.php', false); $items .= '<li>'. $loginoutlink .'</li>'; return $items; }
Add a Login Link to wp_nav_menu
//ADD LOGIN LINK TO MENU add_filter('wp_nav_menu_items', 'add_login_logout_link', 10, 2); function add_login_logout_link($items, $args) { $loginoutlink = wp_loginout('index.php', false); $items .= '<li>'. $loginoutlink .'</li>'; return $items; }
-
不要使用输出缓冲.wp_loginout()具有第二个参数$echo使生活更轻松.Do not use output buffering. `wp_loginout()` has a second parameter `$echo` to make your life easier.
- 3
- 2011-02-23
- fuxia
-
- 2011-05-12
在admin中将"帖子"菜单名称更改为您想要的任何名称(例如"文章")
// hook the translation filters add_filter('gettext','change_post_to_article'); add_filter('ngettext','change_post_to_article'); function change_post_to_article( $translated ) { $translated = str_ireplace('Post','Article',$translated );// ireplace is PHP5 only return $translated; }
Changing "Posts" menu name in admin to whatever you wish (e.g. "Articles")
// hook the translation filters add_filter('gettext','change_post_to_article'); add_filter('ngettext','change_post_to_article'); function change_post_to_article( $translated ) { $translated = str_ireplace('Post','Article',$translated );// ireplace is PHP5 only return $translated; }
Credits to smashingmagazine.com
-
- 2011-09-14
删除链接菜单项
我的许多WordPress安装都不需要用户有权访问"链接"菜单项.此功能将其从视图中删除.
add_action( 'admin_menu', 'custom_admin_menu' ); function custom_admin_menu() { global $menu; // var_dump($menu); // use this to identify the key for the menu item you want to remove unset( $menu[15] ); //key 15 is links if ( !current_user_can('manage_options') ) { unset( $menu[75] ); } //key 75 is tools ... but only for non super admins }
Remove Links Menu Item
Many of my WordPress installs don't require that users have access to the 'Links' menu item. This function removes it from view.
add_action( 'admin_menu', 'custom_admin_menu' ); function custom_admin_menu() { global $menu; // var_dump($menu); // use this to identify the key for the menu item you want to remove unset( $menu[15] ); //key 15 is links if ( !current_user_can('manage_options') ) { unset( $menu[75] ); } //key 75 is tools ... but only for non super admins }
-
- 2011-09-14
为非管理员禁用立即升级消息
我实际上是不使用此代码的忠实拥护者.相反,我更愿意允许客户更新自己的WordPress安装.这有助于使网站保持最新状态,并迫使我编写更好的代码.
if ( !current_user_can( 'manage_options' ) ) { add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ), 2 ); add_filter( 'pre_option_update_core', create_function( '$a', "return null;" ) ); }
Disable Upgrade Now Message for Non-Administrators
I'm actually a big fan of NOT using this code. Instead, I prefer to allow customers to update their own WordPress installs. This helps keep the site up-to-date and forces me to write better code.
if ( !current_user_can( 'manage_options' ) ) { add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ), 2 ); add_filter( 'pre_option_update_core', create_function( '$a', "return null;" ) ); }
-
- 2011-12-04
将自定义类添加到下一个和上一个链接
add_filter('next_posts_link_attributes', 'posts_link_attributes'); add_filter('previous_posts_link_attributes', 'posts_link_attributes'); function posts_link_attributes(){ return 'class="styled-button"'; }
Add a custom class to the next and previous links
add_filter('next_posts_link_attributes', 'posts_link_attributes'); add_filter('previous_posts_link_attributes', 'posts_link_attributes'); function posts_link_attributes(){ return 'class="styled-button"'; }
-
- 2011-12-04
发布帖子时自动向该帖子添加隐藏的自定义字段并将其关联值
add_action('publish_page', 'add_custom_field_automatically'); add_action('publish_post', 'add_custom_field_automatically'); function add_custom_field_automatically($post_ID) { global $wpdb; if(!wp_is_post_revision($post_ID)) { add_post_meta($post_ID, 'field-name', 'custom value', true); } }
Automatically add a hidden custom field and associating value to a post when the post is published
add_action('publish_page', 'add_custom_field_automatically'); add_action('publish_post', 'add_custom_field_automatically'); function add_custom_field_automatically($post_ID) { global $wpdb; if(!wp_is_post_revision($post_ID)) { add_post_meta($post_ID, 'field-name', 'custom value', true); } }
-
- 2011-12-17
将自定义帖子类型添加到存档页面
function namespace_add_custom_types( $query ) { if( is_category() || is_tag() && empty( $query->query_vars['suppress_filters'] ) ) { $query->set( 'post_type', array( 'post', 'your-custom-post-type-here' )); return $query; } } add_filter( 'pre_get_posts', 'namespace_add_custom_types' );
Add custom post types to archives page
function namespace_add_custom_types( $query ) { if( is_category() || is_tag() && empty( $query->query_vars['suppress_filters'] ) ) { $query->set( 'post_type', array( 'post', 'your-custom-post-type-here' )); return $query; } } add_filter( 'pre_get_posts', 'namespace_add_custom_types' );
-
- 2010-12-28
使用简码致电bloginfo ...
function digwp_bloginfo_shortcode($atts) { extract(shortcode_atts(array( 'key' => '', ), $atts)); return get_bloginfo($key); } add_shortcode('bloginfo', 'digwp_bloginfo_shortcode');
用法:
[bloginfo key='name']
Call bloginfo using shortcode...
function digwp_bloginfo_shortcode($atts) { extract(shortcode_atts(array( 'key' => '', ), $atts)); return get_bloginfo($key); } add_shortcode('bloginfo', 'digwp_bloginfo_shortcode');
Usage:
[bloginfo key='name']
-
您可以添加一些示例说明哪些地方可能有用吗?Can you add some examples of where this could be useful?
- 0
- 2020-02-01
- Peter Mortensen
与许多现在正在查看此帖子的其他人一样,我一直在阅读各种博客,论坛和讨论组,以学习和提高我的WordPress技能.在过去的12个月中,我一直致力于通过向我的
functions.php
文件中添加代码来代替插件的使用.虽然我完全同意插件在许多情况下非常有用,但我的经验证明,尽管可能存在插件,但在90%的使用情况下,实际使用插件可能会造成不必要的复杂性和兼容性问题.此外,在很多情况下,此类插件添加了我不需要或不需要的菜单和其他管理元素.
我经常发现,通过分析插件的代码,我可以剥离出我想要的代码并将其硬编码到我的
functions.php
中.这为我提供了所需的确切功能,而不必包含不必要的元素.所以,本文的目的是我试图吸引您(读者/管理员/开发人员)与我和其他人在这里分享您认为有用并添加到主题的
function.php
文件,无需使用插件即可扩展或增强WordPress.当您在此处提交回复时,请给每个代码位一个标题,让我们知道您是否知道与哪个版本的WordPress兼容,包括您认为最能描述其功能的描述,以及(如果适用)包括链接到找到信息的原始插件或来源.
我期待您的所有答复,当然,无论何时发现它们,我都会不断添加自己的新发现.
请点击问题或答案左侧的上箭头,对问题和您认为有用的答案进行投票.