您可以创建一个自定义短代码包装器,该包装器将使用所需的属性执行短代码,因此您可以使用[jobs-custom]
在页面中:
add_shortcode(\'jobs-custom\', \'custom_jobs_shortcode\');
function custom_jobs_shortcode($atts) {
if (is_user_logged_in()) {
$per_page = get_user_meta(get_current_user_id(), \'jobs-per-page\', true);
}
if (!isset($per_page) || !$per_page) {
if (isset($_COOKIE[\'jobs-per-page\'])) {$per_page = $_COOKIE[\'jobs-per-page\'];}
else {$per_page = 10;}
}
return do_shortcode(\'[jobs per_page="\'.$per_page.\'"]\');
}
然后添加一个早期操作以检查querystring值并设置用户元/cookie。。。
add_action(\'init\', \'custom_set_jobs_per_page\');
function custom_set_jobs_per_page() {
if (isset($_REQUEST[\'jobs-per-page\'])) {
$per_page = absint($_REQUEST[\'jobs-per-page\']);
if ($per_page > 10) {
if (is_user_logged_in()) {update_user_meta(get_current_user_id(), \'jobs-per-page\', $per_page);}
else {setcookie(\'jobs-per-page\', $per_page, (time()+(7*24*60*60);}
}
}
}
有了它,您可以添加javascript
onchange
功能到您的
<select>
输入:
<script>function change_jobs_per_page() {
el = document.getElementById(\'jobs-per-page-select\');
perpage = el.options[el.selectedIndex].value;
href = window.location.href;
if (href.indexOf(\'jobs-per-page=\') > -1) {
href = href.split(\'jobs-per-page=\');
window.location.href = href[0]+\'jobs-per-page=\'+perpage;
} else if (href.indexOf(\'?\') > -1) {
window.location.href = href+\'&jobs-per-page=\'+perpage;
} else {
window.location.href = href+\'?jobs-per-page=\'+perpage;
}
}</script>
<select id=\'jobs-per-page-select\' onchange=\'change_jobs_per_page();\'>
这种方法的优点是,新的每页值是持久的,直到用户更改为止(或者用户cookie过期)