我开发了一个WordPress插件,需要在保存自定义帖子类型的帖子时执行其他处理.
最合理的解决方案是使用"save_post"操作.在被调用时,动作处理程序在自定义表中创建或更新数据库记录(取决于是否单击"创建帖子"或"更新帖子").
我已经实现了它,它似乎工作得很好,但是我想解决一个小问题.在第一次加载"创建帖子"页面时(即在输入任何用户输入之前和按下提交新/更改按钮之前),似乎也会触发"save_post".
这意味着自定义数据库表将为每个保存的新帖子填充一个空行.它还意味着每次加载发布页面时都有一个空行.
这是我的"save_post"处理程序的简化版本:
function do_save_post($post_id) {
if (get_post_type($post_id) !== 'mycustomtype')
return $post_id;
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
return $post_id;
if (!current_user_can('edit_mycustomtype'))
return $post_id;
echo 'This happens when selecting "Add New" from admin sidebar.';
echo 'Even though post has not been saved or updated.';
echo 'This should only happen when button on right of editor is clicked.';
}
Run Code Online (Sandbox Code Playgroud)
如何检测帖子是否实际被保存?
不确定我是否正确措辞但基本上我想在仅使用实际插件的页面上加载插件CSS/JS ..我已经通过插件文件中wp_enqueue_script的插件中使用的任何句柄搜索完成了很多操作.只是wp_dequeue_script在functions.php中
但是,有一些样式的队列包括.php而不是css文件,例如..在插件中它将队列文件排队
wp_enqueue_style("myrp-stuff", MYRP_PLUGIN_URL . "/myrp-hotlink-css.php");
Run Code Online (Sandbox Code Playgroud)
所以我试过了:
wp_dequeue_style('myrp-stuff');
wp_deregister_style('myrp-stuff');
Run Code Online (Sandbox Code Playgroud)
它不起作用
但是,当页面/帖子呈现时,它显示为
<link rel='stylesheet' id='myrp-stuff-css' href='http://www.modernlogic.co/wp/wp-content/plugins/MyRP/myrp-hotlink-css.php?ver=3.4.2' type='text/css' media='all' />
Run Code Online (Sandbox Code Playgroud)
它将-css添加到id并拒绝出列/取消注册并移动.
我也试过以下没有运气
wp_dequeue_style('myrp-stuff-css');
wp_deregister_style('myrp-stuff-css');
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我刚刚发现了BuddyPress(一个将WordPress MU安装转换为社交网络的插件集合),现在我想知道是否有任何类似Digg的投票插件用于WordPress.这最终将整合到BuddyPress网站中,网站成员将在该网站上提交,投票和评论故事(很像Digg).
我有一种感觉,我最终将不得不从头开始构建这个,但由于该站点将构建在WordPress上,我想知道是否有任何插件已经可用添加此功能.到目前为止,我的搜索结果是空洞的.我确实找到了一个具有WpVote功能的Wordpress博客.它甚至使用websnapr自动创建故事网页的缩略图(我假设).我浏览了页面源代码,似乎没有找到任何他们正在使用的WP插件的提示.
我想知道是否有任何方法可以知道插件是否刚刚安装.我不在乎它是否已激活,但只有安装了该插件!
你知道有什么好办法吗?
我必须更加具体.我知道在哪里可以找到插件,我知道如何安装可以看到.问题是,如果有任何编程方式来检查插件是否已安装.
即:WordPress为我们提供了register_activation_hook(),以便在插件激活时进行我们喜欢的任何操作,但是没有任何相关的插件安装挂钩.有没有办法确定插件安装?
我试图用我的多站点的服务器cron替换WordPress cron.似乎我必须为每个站点添加一个cron条目,这可能是一个管理噩梦.相反,我想运行一个调用每个子站点的cron的单个cron作业.下面是一个插件脚本,但收到错误500.该错误消息具有误导性和错误,因为它说明了未安装的ffmpeg(没有其他错误消息).有人可以帮我纠正一下吗?该插件位于GitHub(https://github.com/chibani/wp_multisite_cron),但我认为这将成为社区的一个很棒的插件.谢谢你的帮助!
register_activation_hook(__FILE__, array('wp_multisite_cron','plugin_activation'));
add_action('init', array('wp_multisite_cron', 'init'));
class wp_multisite_cron{
const LANG = 'wp_multisite_cron';
const LANG_DIR = '/lang/';
/**
*
* Plugin activation (sets default parameters)
*/
public static function plugin_activation(){
if(!self::get_option('concurrent_crons'))
self::update_option('concurrent_crons', 100);
}
/**
*
* The main 'loader'
*/
public static function init() {
//Setup the translation
load_plugin_textdomain(self::LANG, false, dirname(plugin_basename( __FILE__ ) ) . self::LANG_DIR);
//The multisite cron action
add_action('wp_ajax_wp_multisite_cron_call', array('wp_multisite_cron','cron_call'));
add_action('wp_ajax_nopriv_wp_multisite_cron_call', array('wp_multisite_cron','cron_call'));
// admin actions and hooks
if (is_admin()) {
self::admin_hooks();
}
}
/**
*
* The …Run Code Online (Sandbox Code Playgroud) 由于没有回复而转贴.
我在使用Wordpress SEO API设置自定义规范标题时遇到了一些麻烦:http://yoast.com/wordpress-seo-api-docs/
我有一个名为designs的自定义帖子类型,它使用自定义URL重写.它需要基页/设计/并添加设计名称,如/ design/a-design /.Wordpress SEO中的规范默认为/ design/page.
我想要做的是编写一个函数来确定它是否是一个设计页面并返回一个不同的规范.我可以测试它是否是一个设计页面if ($design == ""){,我尝试使用自定义永久链接URL,但该功能只是完全删除了规范.
这是我的基本功能:
function design_canonical(){
if ($design == "") {
// Leave blank and Yoast SEO will use default canonical for posts/pages
}
else {
return $design['detailslink'];
}
}
add_filter( 'wpseo_canonical', 'design_canonical' )
Run Code Online (Sandbox Code Playgroud)
很明显做错了什么,但我不完全确定是什么.
思考?
我安装了一个名为的插件Translator Box,我使用它的短代码并将其放入我的wordpress主题header.php.
[translation_box languages="english,russian,german,spanish,french,chinese" width="100%" height="200px" bgcolor="white" txtcolor="#000000"]
Run Code Online (Sandbox Code Playgroud)
但是不起作用!
它还在窗口小部件的"已启用"窗口小部件中生成窗口小部件.有没有办法在header.php中使用一些可以调用小部件的代码?谢谢.
我的网站安装了6到8个插件,我有兴趣知道是否有办法将这些插件中的所有css文件合并为一个或两个文件
谢谢
我正在尝试从某个帖子类型动态加载图像.我已经使用高级自定义字段插件将图像字段附加到我的帖子.我目前正在使用此代码:
$.getJSON('/?json=get_recent_posts&post_type=slides-verhuur&custom_fields=image', {}, function(data){
console.log(data);
});
Run Code Online (Sandbox Code Playgroud)
但是,当我运行代码时,我获得的结果JSON包含一个"自定义字段"属性,该属性具有"图像"属性,但这只包含值"80",即图像的ID.有没有办法获取图像网址?
我在Wordpress>用户>配置文件字段中创建了一个自定义字段(复选框).我的网站是新闻的全方位网站,因此它通过RSS收集来自20个不同来源的新闻,并在我的Wordpress网站中添加它们的帖子.这是我的自定义字段的样子:
如果您只是我首页上的访问者,我会在首页上显示所有帖子.
如果您是登录用户; 那么你应该能够在我的网站的起始页面上选择和保存你想要阅读的20个来源.这可以在今天选择和保存,但仅限于BP用户设置页面:
现在,"用户配置文件设置"页面的问题是:
a)我不希望在"配置文件>编辑"选项卡中显示该表单.我希望我的表单在我的起始页上(在新闻流程之上,当然是登录用户),也许在某个时间点在一个小部件中 - 无论如何 - 最重要的是,可以自由地在任何地方放置(和样式)表单.
b)表单包括我要删除的字段(名称和描述,即"来源"=字段名称)等.
上图中的用户已选择并保存,以便从我网站上的两个不同来源读取新闻.处理此问题的代码位于index.php的起始页上:
$sources = xprofile_get_field_data( 'sources', $current_user_id, $multi_format = 'array' );
query_posts(array('category__and'=>array($sources)));
Run Code Online (Sandbox Code Playgroud)
问题 有没有办法检索此表单并从登录用户的任何地方更新?我不想受限于仅在"配置文件设置"页面中具有该表单的想法.我希望用户必须在我网站的首页上方形成我的新闻流,因此用户会感觉"哦,如果我创建一个帐户,我可以自定义我的新闻流!" - 这应该从登录用户的任何地方完成.
wordpress ×10
wordpress-plugin ×10
php ×4
buddypress ×1
cron ×1
json ×1
mysql ×1
plugins ×1
seo ×1