숏코드 콜백 내에서 HEAD에 워드 프레스 추가
저는 짧은 코드를 등록하기 위해 플러그인을 만들고 있는데, 다음과 같이 사용될 때:[append_css mycss]라고 하는 사용자 정의 필드를 찾을 것입니다.mycss내용을 에 추가합니다.head문서의코드가 본체에 추가되고 있다는 것과 머리에 추가되는 방법을 모른다는 것을 제외하고는 모든 것이 잘 작동합니다.
작업 추가를 시도했습니다.wp_head하지만 그렇게 하는 동안 변수를 어떻게 전달해야 할지 모르겠고, 어쨌든 숏코드 콜백 내에서 발화하는 것 같지는 않습니다.
function append_css_short($params){
global $post;
if(sizeof($params)){
$key = $params[0];
} else {
$key = 'css';
}
return '<style type="text/css">'.
get_post_meta($post->ID, $key, true)
.'</style>';
}
add_shortcode('append_css','append_css_short');
이걸 어떻게 하면 몸 대신 머리에 쓸 수 있을까요?그 문제에 대한 더 나은 접근법이 있습니까?
필요한 문서의 머리 부분에 인쇄하려면 사용해야 합니다.add_action와 함께wp_head갈고리를 매다
짧은 코드를 전혀 사용하지 않는 것이 더 나은 접근법이 될 수 있습니다.쇼트코드는 내용을 추가하거나 내용을 수정하기 위한 것입니다.대신 첨부할 수 있는 함수를 만듭니다.wp_head당신의 CSS를 인쇄할 겁니다.사용자가 사용자 정의 필드 이름을 일관되게 유지하도록 강제할 수 있습니다.또는 플러그인이 사용자 지정 CSS를 입력할 수 있는 게시물에 메타박스를 추가하는 것이 좋습니다.그러면 필드의 이름을 항상 확신할 수 있습니다.
function append_css() {
global $post;
if ( ! get_post_meta( $post->ID, 'mypluginname_css', true ) ) {
return;
}
return '<style type="text/css">'. get_post_meta($post->ID, $key, true) .'</style>';
}
add_action( 'wp_head', 'append_css' );
내가 확신하지 못하는 유일한 것은 그 여부입니다.$post사용자 정의 필드 데이터는 루프 외부에서 사용할 수 있습니다.따라서 사용자 정의 데이터를 끌어오기 위해 추가 쿼리를 추가해야 할 수도 있습니다.wp_head해고됨.
@Jrod가 제공하는 답변에 약간의 수정을 가하면 다음과 같은 용도로 작동하는 플러그인이 완성됩니다.
- 호출된 사용자 지정 필드 만들기
append_css(또는append_js) 필수 코드 포함 - ... 물론 2번은 없습니다 ;)
코드
<?php
/**
* @package Append_CSS_JS
* @version 0.1
*/
/*
Plugin Name: Append CSS JS
Plugin URI: http://itaccess.org/wordpress-plugins/append-css-js/
Description: Append Css or Js to any page using Custom Fields
Author: Billy Moon
Version: 0.1
Author URI: http://billy.itaccess.org/
*/
function append_css() {
global $post;
if ( ! get_post_meta( $post->ID, 'append_css', true ) ){
return;
}
echo '<style type="text/css">'. get_post_meta($post->ID, 'append_css', true) .'</style>';
}
add_action( 'wp_head', 'append_css' );
function append_js() {
global $post;
if ( ! get_post_meta( $post->ID, 'append_js', true ) ) {
return;
}
echo '<script type="text/javascript">'. get_post_meta($post->ID, 'append_js', true) .'</script>';
}
add_action( 'wp_head', 'append_js' );
?>
쇼트코드는 다음에 호출하기 때문에 그렇게는 불가능할 것 같습니다.wp_head(), 그래서 당신은 그것을 걸 수 없습니다.
여기 모든 워드프레스 후크(http://adambrown.info/p/wp_hooks )의 목록이 있습니다.
편집:
해결 방법은 다음과 같습니다.
템플릿에서:
<?php
//get the content of your post:
if(have_posts()) while(have_posts()) the_post();
$pcontent = get_the_content();
endwhile;
?>
<html>
<head>
...
</head>
<body>
...
<?php echo $pcontent; ?>
</body>
</html>
언급URL : https://stackoverflow.com/questions/14649733/wordpress-append-to-head-from-within-shortcode-callback
'programing' 카테고리의 다른 글
| 워드프레스 멀티사이트에서 사용자가 자신의 플러그인을 설치할 수 있도록 하려면 어떻게 해야 합니까? (0) | 2023.09.28 |
|---|---|
| AD 계정이 잠겨 있는지 확인하려면 어떻게 해야 합니까? (0) | 2023.09.28 |
| MariaDB 테이블과 테이블 열에서 특정 문자를 대체할 수 있는 제안 사항이 있습니까? (0) | 2023.09.28 |
| data.table로 할 수 없는 data.frame으로 할 수 있는 작업? (0) | 2023.09.28 |
| 효과가 끝날 때까지 jQuery를 기다리게 하는 방법은? (0) | 2023.09.28 |