这个问题并没有那么复杂(与我将要写的描述相比:),但我希望尽可能正确地解决这个问题(例如,我可能在Home.php上做错了),所以我将给出整个上下文。作为我设计的一部分,该页面显示不同的背景图像。为此,我使用了超大的“使用jQuery库构建的全屏背景幻灯片”。我的一些页面使用一个背景图像(显然没有幻灯片:),一些页面使用三个。此外,我还使用javascript检测用户监视器的分辨率,并为其提供适当的图像大小:
var imageToBeLoaded = "images/bg_index.jpg";
$(document).ready( function () {
if(window.screen.width > 1024) {
imageToBeLoaded = "images/bg_index_large.jpg";
}});
因此,问题是:
a) 首页。php不是一个可以通过WP Admin访问的页面,所以我不能给它自定义字段。
解决方案:if (isHome()){ setDefaultalues();}
b) 如果我不在主页上,我需要获取自定义字段键/值,但只针对与图像背景相关的属性(正如我之前所说,任何页面都有1到N个背景图像)。例如,“我的关于”页面有5个属性,bgImg1
, smallImg1
, bgImg2
, smallImg2
和greeting text
. 这意味着我需要获取所有变量并解析名称,以便获取例如。bgImg1
和bgImg2
. 此外,Supersized还需要一个文本描述作为另一个参数,因此页面还需要另外两个参数,desc1
和desc2
我还需要将其与适当的bgImg
因此,我可以生成如下输出(从静态页面):
{image : \'images/bg_rwanda.jpg\', title : \'Rwanda Home\'}, {image : \'images/bg_rwanda2.jpg\', title : \'Rwanda School\'}
伪代码如下所示:
var output = "{image : \'";
var imageIsLarge= false;
if (getResolution() > 1024 ) { imageIsLarge= true; }
while (hasNextProperty()){
Property prop = nextProperty();
if (imageIsLarge) {
if (prop.getKey().startsWith (bgImageL)){
output += prop.getValue()+", title:";
// etc. Also, I need to set the code to first get the first img,
// not just in any order and pair it with the first description
现在这似乎有点复杂,我觉得我可以做得更简单,但我不知道怎么做。
SO网友:chrisguitarguy
您可以使用get_post_meta()
.
Wordpress有一个名为wp_localize_script()
顾名思义,它习惯于通过从PHP数组创建javascript对象来本地化脚本。使用wp\\u enqueue\\u script()将脚本添加到wordpress前端时,可以通过调用wp_localize_script()
之后如果需要从自定义字段或数据库中的其他位置将值获取到某种javascript对象中,这可能是最简单的方法。不完全是什么wp_localize_script
是为,但它会完成工作。
下面是一个示例:
add_action( \'wp_print_scripts\', \'wpse23525_add_scripts\' );
function wpse23525_add_scripts()
{
// Only for single posts
if( !is_single() ) return;
wp_enqueue_script( \'wpse23525_script\', \'path/to/script.js\', array( \'jquery\' ) );
// We should have $post by now, but get it if not
global $post;
if( empty( $post ) ) $post = get_queried_object();
$localize = array(
\'some_key\' => get_post_meta( $post->ID, \'some_key\', true ),
\'another_key\' => get_post_meta( $post->ID, \'another_key\', true ),
\'one_more\' => get_post_meta( $post->ID, \'one_more\', true )
);
wp_localize_script( \'wpse23525_script\', \'wpse23525_obj\', $localize );
}
这会在前端显示出来(当然,值可能会改变):
<script type=\'text/javascript\'>
/* <![CDATA[ */
var wpse23525_obj = {
some_key: "test1",
another_key: "test2",
one_more: "test3"
};
/* ]]> */
</script>
<script type=\'text/javascript\' src=\'http://localhost:8888/wp3.2path/to/script.js?ver=3.2.1\'></script>
脚本。js将包含您计划对数据执行的所有操作,可以使用
wpse23525_obj.some_key
或
wpse23525_obj.another_key
等
因此:
var imageToBeLoaded = "images/bg_index.jpg";
$(document).ready( function () {
if(window.screen.width > 1024) {
imageToBeLoaded = "images/bg_index_large.jpg";
}});
成为
var imageToBeLoaded = wpse23525_obj.another_key;
$(document).ready( function () {
if(window.screen.width > 1024) {
imageToBeLoaded = wpse23525_obj.some_key;
}});
更多阅读:
http://codex.wordpress.org/Function_Reference/get_post_meta
http://codex.wordpress.org/Function_Reference/wp_enqueue_script
http://codex.wordpress.org/Function_Reference/wp_localize_script
- http://yoast.com/get-queried-object/